Каждый 1снег «знает», что «в восьмерке надо использовать запросы». В первую очередь это – результат работы отдела маркетинга «флагмана». Сами же 1снеги (старого поколения) так ненавидели запросы в 7-ке, что повелись на подачу «флагмана» весьма охотно и некритически. А потом это стало так же привычно, как «всемирность» ньютонова тяготения.
Повод для сомнения дал ламерский вопрос на ИС. Нет, поначалу дружные вопли «Запрос! Запрос!» ничего не вызвали, кроме желания, чтобы орали по-тише. Зацепила совершенно фантастическая конструкция автора вопроса:
ДокументОбъект = Документы.ЖурналПроизводственныхЗаданий.ПолучитьСсылку(Ссылка).ПолучитьОбъект(); КопируемоеЗначение = ДокументОбъект.СпецификацияУзлов.ВыгрузитьКолонку(Колонка).Получить(Строка-1); |
А потом в подсознании всплыло, что скульные базы еще в семёрошные времена рекомендовались для объемов и надёжности, а в скорости локальные файловые скуль превосходили. И как-то сам собой набросался простенький тестик, см. пост (12) в той ветке.
Объектная модель не просто оказалась быстрее, а прямо таки уделала запрос.
Замечания коллеги sonuchin3 несколько снизили накал страстей, и было решено доработать условия теста, чтобы получить цифры достаточно сопоставимые с учетом кэширования.
В серии тестовых 100 000-ных циклов проводились обращения к разным количествам оригинальных ссылок, результат – см. табличное поле на рисунке.
Тестовая конфигурация – с массивом документов и обработкой – прилагается.
**
Однако, этот тест всего лишь выявил для моей конфигурации (железо, ось), что для выборки до двух сотен ссылок емкость кеша позволяет объектной модели за свой счет обогнать запросную в 500-ном цикле.
Т.е. мы всего лишь получили исходные цифры для эксперимента: 500 раз возьмем из массива документов порции по 200 ссылок, это и даст нам хорошее сравнение способов доступа к данным - для этого конкретного, простейшего на самом деле, случая.
ЧАСТЬ 2. Результаты эксперимента, приближенного к реальности.
Для сравнения скорости доступа к данным был поставлен следующий эксперимент.
На форме создана таблица типа ДокументСписок.РеализацияТоваровУслуг
В таблицу добавлена колонка с полем ввода типа СправочникСсылка.Номенклатура
На форме размещен радио с двумя позициями – способами получения данных:
0 – запросом, 1 – объектом
Для таблицы определен обработчик ПриПолученииДанных
В зависимости от положения радио колонка Номенклатура заполнялась тем или иным способом.
Для обоих положений радио:
- текущая строка помещалась вверх списка
- включался замер производительности
- текушая строка стрелкой вниз перемещалась по списку до конца
- снимался скрин замера
Результаты представлены на картинках:
Складывая значимые цифры, получаем
Для способа запросом: 0,07 сек
Для объектом: 0,0023 сек
Обработку можно скачать и попробовать.