Имя: Пароль:
1C
1С v8
Загадка быстродействия подбора товаров в веб клиенте
,
0 2dolist
 
06.12.16
12:02
Здравствуйте. При выполнении обработки подбора товаров в кабинете клиента через веб интерфейс столкнулся с тормозами при открытии формы. Источник тормозов - запрос для динамического списка номенклатуры с ценами.

Причина в том, что сначала выполняется запрос на нахождение цен на момент времени больше текущего (уже долго выполняется) и если такие цены найдены, то в запрос динамического списка в виртуальную таблицу цен добавляется срез по Периоду, где он - текущая дата.

Так вот, открыл я форму подбора через веб клиент и клиент призадумался секунд на 40. Последующие открытия ускорились до ~17-20 секунд. Кстати, почему? С кешем связано?

Проверил на тонком клиенте, действительно тормозно, но раза в 2 быстрее, чем в вебе.

Попробовал убрать проверку на наличие цен в будущем и просто поставил срез по периоду в виртуальной таблице цен номенклатуры. В тонком клиенте стало открываться относительно живо - быстрее 4 секунд, но в вебе открытие замедлилось до больше минуты!

В качестве решения проблемы я запретил цены "на будущее" и в запросе происходит просто срез последних. Это привело к тому, что форма в первый раз открылась за 20 секунд, а последующие открытия секунды за 2-3.

Так вот, взял я этот самый запрос и прогнал во внешней обработке с замером времени выполнения как в тонком, так и в веб клиентах. Средние значения получились:
В вебе порядка 690 мс для среза по дате и 530 мс для среза последних.
В тонком порядка 640 мс для среза по дате и 515 мс для среза последних.

Так откуда берётся такая разительная временная разница между просто выполнением запроса и открытием формы? Вообще не пойму. Судя по быстродействию выполнения запросов в обработке, разница в 25-30%.
А по открытию формы, на 1-е открытие 300-400%, последующие 3000-4500%.
1 2dolist
 
06.12.16
12:05
> Так вот, открыл я форму подбора через веб клиент и клиент призадумался секунд на 40. Последующие открытия ускорились до ~17-20 секунд. Кстати, почему? С кешем связано?

Уточню, что цен на будущие периоды у нас нет, по этому сам запрос для динамической таблицы выполнялся со срезом по последним, а остальное время уходило на поиск цен в будущем чтобы определить надо ли нам делать срез по дате или нет (так в типовой написано).
2 2dolist
 
06.12.16
12:08
Замер производительности, кстати, показал, что 95% времени уходит именно на запрос, т.е. остальные операции не должны особо влиять.
3 Fragster
 
гуру
06.12.16
12:16
недавно в поиске было, как переписать запрос
5 2dolist
 
06.12.16
12:21
так вопрос не как переписать, а почему так
6 Fragster
 
гуру
06.12.16
12:22
7 Fragster
 
гуру
06.12.16
12:22
(5) запрос кривой
8 Fragster
 
гуру
06.12.16
12:22
веб клиент - тормоз
9 2dolist
 
06.12.16
12:31
ну так проверил же запрос по быстродействию
10 Fragster
 
гуру
06.12.16
12:32
(9) 95%, но сколько секунд? вероятно, около 10 из 40 :)
11 PRO100 NigGaZ
 
06.12.16
12:34
rls?
12 Fragster
 
гуру
06.12.16
12:40
что-то типа
выбрать первые 1 1 из РегистрСведений.Цены Где Период > &ДатаПроверки и ТипЦен В (&ТипыЦен)
13 2dolist
 
06.12.16
12:58
(10) ну я могу кинуть запросы целиком, конечно.
14 2dolist
 
06.12.16
12:59
если интересно, вот под ут 11 обработка, которой я проверял быстродействие результирующего запроса.

https://www.dropbox.com/s/nl3exu0yz7ujoh0/ЗамерПродолжительностиЗапроса.epf?dl=0
15 2dolist
 
06.12.16
13:00
даже на всякий случай создавал запрос отдельно, а ни менял текст имеющегося.
16 2dolist
 
06.12.16
13:01
(11) всё, что я менял это убирал срез по периоду в виртуальной таблице цен номенклатуры. РЛС не должен был как-то измениться.
17 2dolist
 
06.12.16
13:22
(10) на открытие формы или на выполнение запроса?
2 + 2 = 3.9999999999999999999999999999999...