Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako da merim vreme izvrsavanja konzolne aplikacije?

[es] :: Pascal / Delphi / Kylix :: Kako da merim vreme izvrsavanja konzolne aplikacije?

[ Pregleda: 3438 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Mzo
Milan Z.

Član broj: 17956
Poruke: 19
*.ptt.yu



Profil

icon Kako da merim vreme izvrsavanja konzolne aplikacije?20.03.2004. u 18:43 - pre 221 meseci
Kako da iz windows aplikacije pokrenem neku konzolnu aplikaciju i
da zatim vidim koliko je milisekundi proslo dok se ta konzolna aplikacija
nije izvrsila? To mi treba da bih testirao koliko se brzo izvrsava neki algoritam.
 
Odgovor na temu

mnis

Član broj: 23025
Poruke: 4
*.70.27.info.com.ph



Profil

icon Re: Kako da merim vreme izvrsavanja konzolne aplikacije?22.03.2004. u 22:26 - pre 220 meseci
Hmm problem se moze rijesiti na vise nacina.
Mozes recimo tu console aplikaciju pokrenes koristeci CreateProcess() a zatim koristis WaitForSingleObject na hProcess handle da odredis kad se console aplikacije zavrsila. Onda ti jos ostaje da izmjeris proteklo vrijeme. Mogao bi posle CreateProcess poziva da kreiras thread koji ce da radi nesto kao
while(1)
{
Sleep(1);
msec++;
}

a posle WaitForSigleObject pozoves SuspendThread i procitas vrednost msec.
Metod nije 100% precizan ali moze posluziti :)
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 802
217.119.240.*



+62 Profil

icon Re: Kako da merim vreme izvrsavanja konzolne aplikacije?02.04.2004. u 13:04 - pre 220 meseci
Koristi GetTickCount().

Rajko
 
Odgovor na temu

morlic
Milos Orlic
Beograd

Član broj: 6081
Poruke: 735
*.240.eunet.yu



+1 Profil

icon Re: Kako da merim vreme izvrsavanja konzolne aplikacije?11.04.2004. u 22:54 - pre 220 meseci
Kao na primer:

Code:

Var t : longint;
begin
   t := GetTickCount;
   // Startovanje procesa i cekanje na kraj rada
   WinExecAndWait32('c:\program.exe', True);
   ShowMessage(Format('Vreme izvrsavanja je %d msec', [GetTickCount-t]));
end;


a kôd metoda za pokretanje i cekanje na proces je (Kôd je preuzet sa news-a, autor je Peter Below):

Code:

  function WinExecAndWait32(FileName:String; Visibility : integer):integer;
  var  { by Pat Ritchey }
    zAppName:array[0..512] of char;
    StartupInfo:TStartupInfo;
    ProcessInfo:TProcessInformation;
  begin
    StrPCopy(zAppName,FileName);
    FillChar(StartupInfo,Sizeof(StartupInfo),#0);
    StartupInfo.cb := Sizeof(StartupInfo);
    StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
    StartupInfo.wShowWindow := Visibility;
    if not CreateProcess(nil,
      zAppName,                      { pointer to command line string }
      nil,                           { pointer to process security 
attributes
}
      nil,                           { pointer to thread security attributes 
}
      false,                         { handle inheritance flag }
      CREATE_NEW_CONSOLE or          { creation flags }
      NORMAL_PRIORITY_CLASS,
      nil,                           { pointer to new environment block }
      nil,                           { pointer to current directory name }
      StartupInfo,                   { pointer to STARTUPINFO }
      ProcessInfo) then Result := -1 { pointer to PROCESS_INF }
    else
       begin
       WaitforSingleObject(ProcessInfo.hProcess,INFINITE);
       GetExitCodeProcess(ProcessInfo.hProcess,Result);
       CloseHandle( ProcessInfo.hProcess );
       CloseHandle( ProcessInfo.hThread );
       end;
  end;

 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Kako da merim vreme izvrsavanja konzolne aplikacije?

[ Pregleda: 3438 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.