Показать сообщение отдельно
Старый 23.09.2010, 18:12   #37  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Класс для проверки влияния autoSizeColumns() на время запуска форм
Цитата:
Сообщение от mazzy Посмотреть сообщение
не только дисплей-поля. попробуйте обычный браузер таблиц. откройте его в стандартном варианте и с автоопределением ширины столбца.
Не понял эту фразу... В стандартном варианте на всех гридах, включая те, что на форме обозревателя, автоопределение ширины столбца включено. Для обозревателя, на ряду с другими формами, его можно отключить. Я сперва засомневался и попытался, было, приделать в SysSetupFormRun вывод значения свойства autoSizeColumns() для всех открываемых форм (опять же, с помощью итератора ), но тут обнаружил, что соотв. метод на FormGridControl не возвращает текущее значение свойства, а лишь позволяет устанавливать его. К слову, если пользоваться предложенным мной вариантом, то после изменения перечня форм в методе SysSetupFormRun надо перезапускать клиента либо очищать закэшированное в GlobalCache множество названий форм, потому что произведенные изменения в коде не возымеют действия, пока есть закэшированное множество.
Возвращаясь к обозревателю, можно попробовать на двух таблицах: CustTrans и CustTransIdRef. Записей там должно быть одинаковое количество, при этом в CustTrans, в моем случае, более 100 полей, включая системные, в то время как в CustTransIdRef их всего 5. Впрочем, тут сложно отделить замедление, связанное с автоопределением ширины столбцов, от общего замедления, связанного с обработкой большего числа полей обозревателем. Во всяком случае, я лично отчетливо вижу разницу во времени открытия обозревателя для таблиц CustTrans и CustTransIdRef, однако, отключение автоопределения ширины столбцов для grid'ов формы обозревателя таблиц в моем случае не дает сколь-нибудь заметного ускорения.
Цитата:
Сообщение от mazzy Посмотреть сообщение
как только записи не помещаются в буфер, так сразу начинается. визуально - как только начинаются побочные эффекты с вертикальным скролбаром, так сразу отключение покажет эффект.
По-моему Grid в любом случае при открытии формы считывает в память клиента одинаковое количество записей, разве нет?..

...В общем, для проверки влияния автоопределения ширины колонок на время открытия различных форм был написан небольшой класс. Ему при запуске (в коде main() - ибо класс написан на коленке) передается название формы либо идентификатор таблицы, которую надо открыть обозревателем. После этого класс эту форму в цикле открывает, ждет, пока клиент перейдет в состояние простоя, тут же форму закрывает и засекает, сколько времени (тиков) ушло с момента запуска. При этом основной цикл из ндцати открытий формы прогоняется дважды: сперва автоопределение ширины колонок отключается (в предположении, что используется приводившаяся мной доработка для SysSetupFormRun), а затем включается. У меня получились такие тестовые результаты:
Код:
Form 'SalesTable', autoSizeColumns( false )
5159 ticks average per 10 times
Form 'SalesTable', autoSizeColumns( true )
6795 ticks average per 10 times
Form 'SysTableBrowser' for LedgerJournalTrans, autoSizeColumns( false )
2479 ticks average per 10 times
Form 'SysTableBrowser' for LedgerJournalTrans, autoSizeColumns( true )
2417 ticks average per 10 times
Для обозревателя таблицы результат несколько неожиданный: автоопределение ширины колонок хоть чуть-чуть, но ускоряет, а не замедляет его открытие. Я гонял тест много раз - результат для обозревателя всегда повторялся. NB! Некоторые формы требуют указания параметров для успешного запуска, и их надо запускать через специальный пункт меню. Класс на это не заточен, кому надо - допилите.
Вложения
Тип файла: zip DEV_FormRunBenchmark.zip (3.5 Кб, 91 просмотров)
За это сообщение автора поблагодарили: mazzy (5).