Measurement — различия между версиями

Материал из Русский WINE
Перейти к: навигация, поиск
 
(не показана одна промежуточная версия этого же участника)
Строка 1: Строка 1:
 
== Eterforcetest —измерение скорости функций WinAPI ==
 
== Eterforcetest —измерение скорости функций WinAPI ==
 
+
В связи с невозможностью проводить [[Profiling|измерения (профилирование)]] используемого функциями процессорного времени непосредственно на программе (1С 7.7), был создан набор тестов, измеряющий время для заданных функций.
 
+
В связи с невозможностью проводить [[Profiling|измерения (профилирование)]]
+
используемого функциями процессорного времени непосредственно
+
на программе (1С 7.7), был создан набор тестов, измеряющий
+
время для заданных функций.
+
  
 
Тест может выполняться в Wine и Windows.
 
Тест может выполняться в Wine и Windows.
  
 
=== Получить тест ===
 
=== Получить тест ===
 
+
*Тест в виде EXE-файла:
Тест в виде EXE-файла:
+
 
+
 
ftp://updates.etersoft.ru/pub/Etersoft/Eterforcetest/eterforcetest.exe
 
ftp://updates.etersoft.ru/pub/Etersoft/Eterforcetest/eterforcetest.exe
  
 
+
*Репозиторий с исходным кодом:
Репозиторий с исходным кодом:
+
 
+
 
http://git.etersoft.ru/people/lav/packages/eterforcetest.git
 
http://git.etersoft.ru/people/lav/packages/eterforcetest.git
 
 
  
 
=== Использование ===
 
=== Использование ===
 
 
  eterforcetest [название_набора_тестов]
 
  eterforcetest [название_набора_тестов]
  
Строка 38: Строка 26:
  
 
<pre>
 
<pre>
Test for             GetTickCount .....  1.254mks pc ( 4380 ms) (100%) (1/10 - 3.50m iterations)
+
Test for GetTickCount .....  1.254mks pc ( 4380 ms) (100%) (1/10 - 3.50m iterations)
 
</pre>
 
</pre>
  
 
Что означает:
 
Что означает:
- Функция GetTickCount использует 1,25 микросекунды на каждый вызов;
+
* Функция GetTickCount использует 1,25 микросекунды на каждый вызов;
- Выполнения цикла вызовов GetTickCount заняло 4380 миллисекунд,
+
* Выполнения цикла вызовов GetTickCount заняло 4380 миллисекунд,
- что составляет 100% от эталонного значения;
+
* что составляет 100% от эталонного значения;
- была выполнена только 1/10 часть от полного цикла измерений;
+
* была выполнена только 1/10 часть от полного цикла измерений;
- всего при измерении было выполнено 3,5 миллиона вызовов GetTickCount;
+
* всего при измерении было выполнено 3,5 миллиона вызовов GetTickCount;
  
 
Для устранения случайных влияний внутри каждого цикла оформляется 5 подциклов измерений с заведением своего отсчёта
 
Для устранения случайных влияний внутри каждого цикла оформляется 5 подциклов измерений с заведением своего отсчёта
 
и дальнейшим усреднением результатов.
 
и дальнейшим усреднением результатов.
 
 
  
 
=== Разработка ===
 
=== Разработка ===
 
 
 
 
==== Измерение времени работы функций ====
 
==== Измерение времени работы функций ====
 
 
  
 
Тесты создаются следующего вида:
 
Тесты создаются следующего вида:
Строка 72: Строка 53:
  
 
} MEND</pre>
 
} MEND</pre>
 
  
  
 
Параметры MSTART:
 
Параметры MSTART:
  
1. флаг, ненулевое значение которого разрешает выполнения теста
+
#флаг, ненулевое значение которого разрешает выполнения теста
 
+
#текстовое описание тестируемой функции
2. текстовое описание тестируемой функции
+
#делитель для количества итераций (если функция такова, что 7 млн. итераций выполняется очень долго)
 
+
3. делитель для количества итераций (если функция такова, что 7 млн. итераций выполняется очень долго)
+
 
+
 
+
 
+
Обратите внимание на статический str и присваивание ему результата работы функции. Без этого компилятор
+
 
+
может выкинуть функцию, результат работы которой не используется.
+
 
+
  
 +
Обратите внимание на статический str и присваивание ему результата работы функции. Без этого компилятор может выкинуть функцию, результат работы которой не используется.
  
 
=== Проблемы ===
 
=== Проблемы ===
Строка 95: Строка 67:
 
Замечено, что функции, помеченные inline, на самом деле inline не становятся.
 
Замечено, что функции, помеченные inline, на самом деле inline не становятся.
  
[[Category:WINE]]
+
[[Категория:Разработка]]
 
{{Wine}}
 
{{Wine}}

Текущая версия на 23:28, 8 декабря 2015

Eterforcetest —измерение скорости функций WinAPI

В связи с невозможностью проводить измерения (профилирование) используемого функциями процессорного времени непосредственно на программе (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

выведет список всех доступных тестов

При выполнении теста выводятся строки наподобие

Test for GetTickCount .....   1.254mks pc ( 4380 ms) (100%) (1/10 - 3.50m iterations)

Что означает:

  • Функция GetTickCount использует 1,25 микросекунды на каждый вызов;
  • Выполнения цикла вызовов GetTickCount заняло 4380 миллисекунд,
  • что составляет 100% от эталонного значения;
  • была выполнена только 1/10 часть от полного цикла измерений;
  • всего при измерении было выполнено 3,5 миллиона вызовов GetTickCount;

Для устранения случайных влияний внутри каждого цикла оформляется 5 подциклов измерений с заведением своего отсчёта и дальнейшим усреднением результатов.

Разработка

Измерение времени работы функций

Тесты создаются следующего вида:

static CHAR *str;



MSTART(1, "strchr", 1) {

      str = strchr(TEST_STRING, 'z');

} MEND


Параметры MSTART:

  1. флаг, ненулевое значение которого разрешает выполнения теста
  2. текстовое описание тестируемой функции
  3. делитель для количества итераций (если функция такова, что 7 млн. итераций выполняется очень долго)

Обратите внимание на статический str и присваивание ему результата работы функции. Без этого компилятор может выкинуть функцию, результат работы которой не используется.

Проблемы

Замечено, что функции, помеченные inline, на самом деле inline не становятся.

Wine
Search.png
Программы работающие в WineСкачатьШкольный Wine
WINE@Etersoft Общие сведенияУстановка на 64-битные ОСОсобенности разработкиПатчи для WINE@EtersoftАдминистративная установкаДополнительные компонентыКак получить WINE@Etersoft?Лицензия на документациюГлоссарийИспользование аппаратных ключей защиты в LinuxДополнительная информация • [ Совместная работа | по CIFSпо NFS ] • Изменение системных ограниченийРегистрация продуктаПошаговая инструкция по установке rpm-пакетовОбращение в службу поддержкиТерминальные решенияУстановка WINE@EtersoftПодписка на обновленияНастройка WINE@EtersoftРазработчикуEnterpriseЧто такое WINE@Etersoft SQLВозможностиСреда для запуска приложений WindowsИспользование WINE@EtersoftFAQ по использованию WINE@EtersoftОсновные командыWINE@Etersoft/LocalЧто такое WINE@Etersoft Local
Программы Запуск БЭСТ 4+Запуск Консультант+ (сетевой версии)ГарантF1Инфо-Бухгалтер 8.xНалогоплательщик ЮЛ
1C Отличия от обычного WineМестоположение базы 1С1C: Предприятие 7.7 в WINEНастройка 1С 7.7 для работы с SQL-серверомУстановка 1С: Предприятия 8.1Установка 1С: Предприятия 8.1 в трёхзвенном режиме
Пользователю
Помощь Использование WinecfgИспользование RegeditПубличный префиксНесколько версийКлючи regedit
Легальность DCOM95IE5DCOMMSXML
Утилиты для работы с Wine WinetricksWineToolsQ4WinePlayOnLinuxIEs4LinuxWine-DoorsSwineWine LauncherLutris
Разработчику
Компоненты WindowsЗапрет отключения защиты программыУправление обработчиком исключенийStraceNTИзмерение скорости функций WinAPIGLУстройство чтения смарт-картПрофилированиеТесты для проверки интерфейсовНаписание тестов в системе WineАутентификация в домене ADРепозиторииПрименение Git-патчей
Помощь Создание патчейНаписание приложения под wineОтправка патчейСборка eterhackСборка wine-public
Отладка Способы отладкиWINEDEBUGWinedbg
Разработка WINE
1CODBCWinHelpКомпасМетодикаТестирование доступаЦветаФайловый диалогТестированиеЛитератураИзображенияWin32ШрифтыФайловые блокировкиСсылкиКлючи защитыRPMWineGeckoListViewУпаковка Wine
Производителю
Родственные проекты
LUKReactOSARWINSSCrossOverKernelEx
Прочее
PageSetupDlgFreeBSDWwr