Предлагаю  Вашему вниманию  статью об одной небольшой, но удобной и полезной функции.

Не раз сталкивался с ситуацией, когда нужно понять, какая вкладка или какой кусок кода QlikView отрабатывает  дольше всего. Таких «расхитителей времени» обычно ищут при оптимизации приложения, тестировании или при нестандартных ситуациях.  В общем, применение каждый найдёт сам.

Техническое решение

Всматриваться в логи меня не вдохновляет, а вот добавить туда строки, по которым будет легче найти нужную информацию –  хорошая идея.  На одном из мероприятий qRUG Day Олегом Савельевым был предложен простой способ фиксирования времени работы скрипта на определенных этапах.

Я же этот способ немного оптимизировал: в итоге сделал две функции:

QlikView Bookmarks

Сам код можно скачать в текстовом файле WorkTime.

Разберем код:

  1. Перед двумя функциями я определяю три переменные:

vReloadTimeTab для учёта времени перезагрузки вкладок

vReloadTime для учёта времени перезапуска отдельных блоков кода

nсчётчик для блоков кода внутри вкладки

  1. Внутри функций определяю переменные vSpredTab и vSpred, которые обозначают искомое время перезаписи. Определяются, как  now()- значение переменной vReloadTimeTab или vReloadTime соответственно.
  1. Данные функции вызываю в скрипты с помощью include (чтобы при любой доработке функции изменения затрагивали сразу все приложения, где она используется):

$(Include=$(QVScriptPath)\worktime.txt);

Ставлю данную функцию в конце блока Main.

Далее в конце каждой вкладки проставляю:

CALL TraceTabTime;

При необходимости (в зависимости от приложения) вызываю функцию TraceTime:

CALL TraceTime;

Важно: Логи  должны быть включены для возможности просмотра или обработки информации после завершения работы скрипта.

Пример

С помощью меню InsertTest Script (или быстрое сочетание клавиш с последнего qRUG Day “Ctrl + Q + Q”) я сгенерил три вкладки скрипта (скачать сам .qvw с примером можно в конце статьи), завысив количество создаваемых строк,  и добавил на каждую вкладку вызов функции TraceTabTime, а на третьей вкладке использовал функцию TraceTime между блоками скрипта.

После выполнения получил такую картину:

QlikView Bookmarks

Сразу видно, что дольше всех отрабатывала вкладка 3, а внутри вкладки самым ресурсоёмким оказался 3 блок кода.

На больших приложениях анализ данных не столь очевиден, как в данном примере, но с этими функциями жить намного удобнее.

А дальше уже на любителя: текст можно сделать каким угодно, сделать счётчик на вкладки внутри данной функции, убрать или добавить пустые строки.

Возможно, кто-то по-другому решил данный вопрос – тогда поделитесь опытом в комментариях! Или есть желание что-то дополнить, буду только рад 🙂

Скачать: