| 
| 
 | Вопрос # 3 299/ вопрос открыт / | 
 |  Здравствуйте, уважаемые эксперты!Здравствуйте, эксперты!
 Как можно проверить программу на работо способность, т.е. за какое время выполняется, где ее "узкие" места?
 
|  |   Вопрос задал: Maris_1 (статус: Посетитель)Вопрос отправлен: 17 октября 2009, 18:27
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: min@y™ Цитата (Maris_1): например нажимаешь на кнопку и узнать за сколько все процедуры выполнятся.  
 Ну типа примерно так:
 
 
 procedure TMainForm.ButtonClick(Sender: TObject);
var
  BeginTime, EndTime: Cardinal;
begin
  BeginTime:= GetTickCount();
  try
    // <--- Здесь - вызов нужных процедур/функций или чо там у тебя...
  finally
    EndTime:= GetTickCount();
    Application.MessageBox(PChar('Выполнено за ' + IntToStr(EndTime - BeginTime) + ' миллисекунд.'),
                           PChar('Информация'),
                           mb_Ok + mb_IconInformation);
  end;
end;Предупреждаю:
 
 
 Windows - система многозадачная, и только она распоряжается временем, которое выделяется параллельным процессам для выполнения. Естественно, на разных компах оно будет разное. Здесь важно только относительное время.
При малых интервалах (<= 16 мс) функция GetTickCount() имеет ОЧЕНЬ большую погрешность (1000% и более). Имей в виду. Если нужны меньшие интервалы - пиши. И на это есть решение.
 
 Надеюсь, я правильно тебя понял.
 
|  | Ответ отправил: min@y™ (статус: Доктор наук)Время отправки: 17 октября 2009, 19:34
 Оценка за ответ: 5
 |  
 Мини-форум вопросаВсего сообщений: 6; последнее сообщение — 17 октября 2009, 20:06; участников в обсуждении: 2. 
|   | min@y™ (статус: Доктор наук), 17 октября 2009, 19:11 [#1]:Тебе нужно узнать время выполнения определённых алгоритмов программы? Обясни подробнее. Тока побыстрей, а то мне скучно, не знаю, чем заняться, а по зомбоящику нету нихрена.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Maris_1 (статус: Посетитель), 17 октября 2009, 19:17 [#2]:например нажимаешь на кнопку и узнать за сколько все процедуры выполнятся. Или сколько процессорного времени потребовалось программе пока она работала 
 любых алгоритмов
 |  
|   | min@y™ (статус: Доктор наук), 17 октября 2009, 19:22 [#3]: Цитата (Maris_1): например нажимаешь на кнопку и узнать за сколько все процедуры выполнятся.  
 Ща напишу, покури пока...
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | min@y™ (статус: Доктор наук), 17 октября 2009, 19:45 [#4]:Оценку вижу. А комменты где?
 Я угадал? Это то, что ты хотел?
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Maris_1 (статус: Посетитель), 17 октября 2009, 19:58 [#5]:почти нельзя ли чтобы она считала микросекунты |  
|   | min@y™ (статус: Доктор наук), 17 октября 2009, 20:06 [#6]: Цитата (Maris_1): почти нельзя ли чтобы она считала микросекунты  
 Можно, но нет смысла. Я ж те говорю, это будет общее время, за это время выполняется не только твоя программа, но и все остальные запущенные проги, службы, ядро и проч. Точное время выполения можно было измерить только под DOS. Забей на микросекунды.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  17 октября 2009, 20:08: Вопрос перемещён из тематического раздела Delphi » Оболочка Delphi, компилятор, версии среды и т.д. в раздел Delphi » Алгоритмы, преобразования модератором Ерёмин А.А. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |