Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.27;
Скачать: CL | DM;

Вниз

Как узнать время исполнения программы ?   Найти похожие ветки 

 
Фёдор   (2005-02-09 11:44) [0]

В миллисекундах.

Нужно для сравнения быстродействия двух прог.


 
ЮЮ ©   (2005-02-09 11:48) [1]

Если разница измеряется в милисекундах, то какая разница ? :)

Заставь их работать на больших объемах данных, чтобы с секундомером можно было засечь время


 
kaZaNoVa ©   (2005-02-09 11:49) [2]

своей:
Var k,n,h,p:int64;

procedure taimer(a:boolean);
Begin
if a then begin
p:=gettickcount; QueryPerformanceFrequency(h); QueryPerformanceCounter(k);
end else begin
QueryPerformanceCounter(n);
MessageBox(0,"Ready",Pchar(Inttostr(gettickcount-p)+" ms    ("+(Inttostr(round(1000000*(n-k)/h)))+") microsec"),0);
end;end;

begin
taimer(true);

//тут работаем .. )))

taimer(false);


 
kaZaNoVa ©   (2005-02-09 11:52) [3]

чужой:

program Project1;
{$APPTYPE CONSOLE}
{$I-}
uses
 Windows;

Var
f:TextFile;
si:STARTUPINFO;
pi:PROCESS_INFORMATION;
cmdline:string;
p:cardinal;
ProcessID         : DWORD;
 ProcessHandle     : THandle;
 ThreadHandle      : THandle;

begin
UseInputOutput;
ProcessID := GetCurrentProcessID;
ProcessHandle := OpenProcess(PROCESS_SET_INFORMATION, False, ProcessID);
SetPriorityClass(ProcessHandle,  REALTIME_PRIORITY_CLASS);
ThreadHandle := GetCurrentThread;
SetThreadPriority(ThreadHandle,  THREAD_PRIORITY_TIME_CRITICAL);
CloseHandle(ProcessHandle);

ZeroMemory(@si,sizeof(si));
si.cb:=SizeOf(si);

cmdline:="cmd.bat";

p:=gettickcount;

  if not CreateProcess( nil, // No module name (use command line).
      PChar(cmdline),  // Command line.
      nil,             // Process handle not inheritable.
      nil,             // Thread handle not inheritable.
      False,           // Set handle inheritance to FALSE.
      0,               // No creation flags.
      nil,             // Use parent"s environment block.
      nil,             // Use parent"s starting directory.
      si,              // Pointer to STARTUPINFO structure.
      pi )             // Pointer to PROCESS_INFORMATION structure.
     then
      begin
       Writeln( "CreateProcess failed." );
       Readln;
       Exit;
      end;
  WaitForSingleObject( pi.hProcess, INFINITE );
  Writeln((gettickcount-p));
  CloseHandle( pi.hProcess );
  CloseHandle( pi.hThread );
//Writeln("Press Enter Key !");
AssignFile(f,"Result.txt");
Append(f);
if IOResult<>0 then begin
CloseFile(f);
RewRite(f);
end;

Writeln(f,(gettickcount-p));
CloseFile(f);
Sleep(750);
end.


 
ЮЮ ©   (2005-02-09 11:53) [4]

так у него уже проги. Как тут поработаешь?


 
kaZaNoVa ©   (2005-02-09 11:53) [5]

[2][3] извинуюсь за немного "корявый"  код - но писал давно, работает))))
думаю, в основном идея понятна))


 
Digitman ©   (2005-02-09 12:13) [6]

GetProcessTimes


 
Фёдор   (2005-02-09 16:13) [7]

kaZaNoVa
твоим методом у меня в p постоянно 0 ..


 
Anatoly Podgoretsky ©   (2005-02-09 22:12) [8]

Ты вроде еще не ругался, зачем тебя в ро



Страницы: 1 вся ветка

Текущий архив: 2005.02.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.044 c
3-1107157872
Mva
2005-01-31 10:51
2005.02.27
Вставка записи


14-1107346414
ммари
2005-02-02 15:13
2005.02.27
Сишарп


4-1105535816
grigory
2005-01-12 16:16
2005.02.27
Управлять другим приложением!


4-1103983503
vertal
2004-12-25 17:05
2005.02.27
GetLocaleInfo и строковое название языка.


3-1106667952
S.A.S.
2005-01-25 18:45
2005.02.27
UpplyUpdates. FireBird Embedded. DBExpress.