Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как провести benchmark? 
:(
    Опции темы
BCworm
Дата 25.9.2009, 09:50 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 23.8.2007

Репутация: нет
Всего: нет



Привет всем.
Подскажите пожалуйста чем можно провести бенчмарк - т.е чем можно замерить время выполнения программы в зависимости от объема данных? Может есть какие функции чтоб можно было вставить в код?
Может есть какие проги специально под делфи?

PM MAIL   Вверх
RockClimber
Дата 25.9.2009, 11:54 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 848
Регистрация: 5.5.2006
Где: планета 013 в тен туре

Репутация: нет
Всего: 15



Я использую GetTickCount для измерения времени выполнения какого-либо действия. Мне хватает.


--------------------
Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит.
PM MAIL GTalk   Вверх
AntonN
Дата 25.9.2009, 12:18 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.8.2006

Репутация: 3
Всего: 18



Использовать QueryPerformanceCounter(), дающий более точные результаты.
Код

var Divisor:Int64; T1,T2:Int64; TotalTime:Extended;
begin
if QueryPerformanceFrequency( Divisor ) then begin
    QueryPerformanceCounter(T2);

    //делам мега сложные расчеты

    QueryPerformanceCounter(T1);
    TotalTime:=(T1-T2)/Divisor ;
end;



--------------------
user posted image
PM MAIL WWW   Вверх
kami
Дата 25.9.2009, 21:45 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 23
Всего: 72



AQTime.
Позволяет замерять много чего, в том числе и время выполнения функций. Из минусов - платная.
PM MAIL WWW   Вверх
BCworm
Дата 11.10.2009, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 23.8.2007

Репутация: нет
Всего: нет



Предложенный AntonN вариант  - QueryPerformanceCounter() Это именно то что надо. Получилось работает! в смысле показания меняются в зависимости от загрузки при желании можно и график построить НО! Насколько я понял счет ведется не в сек и м.сек. 
А в чем? У меня получаются значения типа 0.0014562349882 Как это превратить в миллисекунды? Или это ни и есть?

Подскажите пожалуйста.
PM MAIL   Вверх
AntonN
Дата 11.10.2009, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.8.2006

Репутация: 3
Всего: 18



BCworm, это результат в секундах smile
чтобы перевести в миллисекунды умнож на 1000


--------------------
user posted image
PM MAIL WWW   Вверх
BCworm
Дата 11.10.2009, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 23.8.2007

Репутация: нет
Всего: нет



Ясно спасибо большое вопрос закрыт!
PM MAIL   Вверх
bems
Дата 11.10.2009, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



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



Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  gpprf133.zip 571,25 Kb


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Beltar
Дата 11.10.2009, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 3
Всего: 7



Небольшая статья на тему оптимизации: http://www.rsdn.ru/article/philosophy/Optimization.xml

ИМХО в ряде практически важных случаев, когда пользователь дает команду и ждет ее результатов, а время выполнения намного больше одной секунды миллисекунды мерить смысла нету, хватит и обычной Now. Кроме того, не всегда можно сразу понять, куда производительность уходит, у меня был случай, когда один и тот же код откомпилированный в Delphi 2007 давал ЕМНИП 27-28 секунд, а в Delphi 2009 аж 42 секунды (анализ с отчетом в Excel примерно 207000 записей в БД). Все время уходило на поиск полей по имени и "преимущества" юникода проявлялись во всей красе. После нудного переписывания на обращения по индексам время выполнения сравнялось.

Это сообщение отредактировал(а) Beltar - 11.10.2009, 21:23


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0781 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.