В связи с невозможностью проводить измерения (профилирование)
используемого функциями процессорного времени непосредственно
на программе (1С 7.7), был создан набор тестов, измеряющий
время для заданных функций.
Тест может выполняться в Wine и Windows.
Тест в виде EXE-файла:
ftp://updates.etersoft.ru/pub/Etersoft/Eterforcetest/eterforcetest.exe
Репозиторий с исходным кодом:
http://git.etersoft.ru/people/lav/packages/eterforcetest.git
eterforcetest [название_набора_тестов]
При запуске без параметров производятся тесты по всем направлениям.
При указании конкретного, например, string, проводятся тесты только из набора тестов
на строковые функции.
eterforcetest --list
выведет список всех доступных тестов
При выполнении теста выводятся строки наподобие
Что означает:
– Функция Get Tick Count? использует 1,25 микросекунды на каждый вызов;
– Выполнения цикла вызовов Get Tick Count? заняло 4380 миллисекунд,
– что составляет 100% от эталонного значения;
– была выполнена только 1/10 часть от полного цикла измерений;
– всего при измерении было выполнено 3,5 миллиона вызовов Get Tick Count?;
Для устранения случайных влияний внутри каждого цикла оформляется 5 подциклов измерений с заведением своего отсчёта
и дальнейшим усреднением результатов.
Тесты создаются следующего вида:
Параметры MSTART:
1. флаг, ненулевое значение которого разрешает выполнения теста
2. текстовое описание тестируемой функции
3. делитель для количества итераций (если функция такова, что 7 млн. итераций выполняется очень долго)
Обратите внимание на статический str и присваивание ему результата работы функции. Без этого компилятор
может выкинуть функцию, результат работы которой не используется.
Замечено, что функции, помеченные inline, на самом деле inline не становятся.