Какое ядро Битрикс быстрее? Новое или старое?

1k
Алексей,
Какое ядро Битрикс быстрее? Новое или старое?

Решил углубиться в дебри bitrix orm и переписать привычный запрос со старого ядра на orm. Ну и замерить время выполнения конечно.

Решил углубиться в дебри bitrix orm и переписать привычный запрос со старого ядра на orm. Ну и замерить время выполнения конечно.

Запрос в инфоблок с фильтром по свойству и получением значения этого свойства. Запрос делался в инфоблок с 6000 элементами и 150 свойствами. Под условие фильтра подходило около 300 элементов.


Старое ядро. Время выполнения от 0.025 до 0.041 сек.

CModule::IncludeModule('iblock');

$dbItems = CIBlockElement::GetList(
	array(),
	array('IBLOCK_ID' => 1, 'ACTIVE' => 'Y', 'PROPERTY_NEW_VALUE' => 'Да'),
	false,
	false,
	array('ID', 'IBLOCK_ID', 'NAME', 'ACTIVE', 'SORT')
);
while ($obItem = $dbItems->GetNextElement()) {
	$arItem = $obItem->GetFields();
	$arItem['NEW'] = $obItem->GetProperties(array(), array('CODE' => 'NEW'))['NEW'];
}

Новое ядро. Время выполнения от 0.051 до 0.085 сек.

\Bitrix\Main\Loader::includeModule('iblock');

$obItems = \Bitrix\Iblock\Elements\ElementCatalogTable::query()
	->setFilter(['ACTIVE' => 'Y','NEW.ITEM.VALUE' => 'Да'])
	->setSelect(['ID', 'IBLOCK_ID', 'NAME', 'ACTIVE', 'SORT', 'NEW.ITEM'])
	->fetchCollection();
foreach ($obItems as $obItem) {
	$arItem = $obItem->collectValues();
	$arItem['NEW'] = $arItem['NEW']->getItem()->collectValues();
}

Пока новое ядро проигрывает в 2 раза. И так же стоит учитывать, что в orm не будет некоторых полей, DETAIL_PAGE_URL например.

Есть вопросы или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.

Опубликовано 10 марта 2022 | Обновлено 11 марта 2022
bitrix orm, эксперимент, оптимизация
Поделиться
Комментарии
❮…❯
Авторизуйтесь чтобы получать уведомления об ответе
Решил углубиться в дебри bitrix orm и переписать привычный запрос со старого ядра на orm. Ну и замерить время выполнения конечно.