delphi4arab منتديات دلفي للعرب
قياس الزمن - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : قياس الزمن (/showthread.php?tid=1801)



قياس الزمن - abdelmalek - 18-03-2010

السلام عليكم ورحمة الله وبركاته

كما نعلم ان سرعة في التنفيد هي من أهم الأمور التي يراعيها المبرمج ( السرعة = ربح الوقت )
وعلى هده المقدمة اطرح سؤالي :
كيف يمكنني قياس الزمن المستغرق في تنفيد تعليمات او دوال الى اخره ؟
مثلا كيف يمكنني قياس الزمن المستغرق في تنفيد هده التعليمة :

PHP كود :
for i:=0 to 10000 do
    
begin
      a
:=i+1;
    
end; 

بارك الله فيكم وزادكم علما


قياس الزمن - shagrouni - 18-03-2010

باستخدام الأمر GetTickCount

PHP كود :
procedure TForm1.Button1Click(Sender: TObject);
var
  
t1, t2: cardinal;
  
i, a: integer;
begin
  t1 
:= GetTickCount;
  for 
i := 0 to 10000 do
  
begin
    a 
:= i + 1;
    
caption := IntToStr(i);
  
end;
  
t2 := GetTickCount - t1;

  
caption := IntToStr(t2) + ' MilliSeconds';

end; 

أو الأمر MilliSecondSpan


قياس الزمن - kachwahed - 18-03-2010

وعليكم السلام ورحمة الله وبركاته
'آينشتاين' هنا ويسأل عن "قياس الزمن" Big Grin
هذا تابع يعيد النتيجة بالنمط: يوم/ساعة/دقيقة/ثانية.ميلي-ثانية
PHP كود :
function MSecToTime(mSec: Int64): string;
var
  
dt : TDateTime;
begin
   dt 
:= mSec / MSecsPerSec / SecsPerDay;
   
Result := Format('%d Day, %s Second', [Trunc(dt), FormatDateTime('hh:nn:ss.z', Frac(dt))]) ;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  
t1, i: cardinal;
begin
  t1 
:= GetTickCount;
  
i := 0;
  
repeat
    Inc
(I);
    
Caption := IntToStr(I);
  
until
    I 
= 10000;
  
ShowMessage(MSecToTime(GetTickCount - t1));
end; 
نشكر الأستاذ خالد الشقروني على مساهماته في المنتدى
جزاك الله خيرا أستاذ ونفع الله بعلمك
بالتوفيق.



قياس الزمن - abdelmalek - 19-03-2010

السلام عليكم ورحمة الله وبركاته

بارك الله فيكم اخواني shagrouni و kachwahed والله جميل :thumbs:
إقتباس :'آينشتاين' هنا ويسأل عن "قياس الزمن"

اخي انشتاين مبتدئ في لغة الذلفي عندما يجمع كم من المعلومات سوف ترى من هو اقوى من انشتاين :crazy::crazy:
سلام والله انا سعيد بوجودكم معنا


قياس الزمن - shagrouni - 19-03-2010

في دلفي 2010 توجد TStopwatch لغرض قياس الزمن، ولكن يجب الانتباه لبعض القضايا فيها.
راجع تقرير الثغرة:
كود :
http://qc.embarcadero.com/wc/qcmain.aspx?d=77628



قياس الزمن - mohfa - 19-03-2010

اخي الكريم هناك مايسمى بال Code Profiling يستعمل لهذا الغرض .
حاول مثلا استعمال :
prodelphi هو تقريبا الاكثر استعمالا .

PHP كود :
http://www.prodelphi.de/indexpd.htm 

ولكن هناك شئ يجب الانتباه له و اظن ان اغلب المبرمجين و حتى المحترفين يهملون اشياء بسيطة و منها :

ال Hints و ال Warnings اثناء عملية ال Compiling . ولهذا المبرمج يجب عليه تنقيح الكود من ال :
Hints و ال Warnings .
فهنالك Profilers لايمكنه القيام بال Code Profiling حتى و لو وجد Hint واحدة فمابالك بال warning .

قبل البدء في عملية القياس او ال Code profiling حاول قدر المستطاع تنقيح الكود من ال Hints و ال Warnings .

و السلام عليكم .


قياس الزمن - mohfa - 19-03-2010

نسيت ان اذكر فقط ان من بين احسن ال Code Profilers هو :
AQtime

PHP كود :
http://www.automatedqa.com/products/aqtime/ 

ولكن هذا ال Code Profiler لايقبل وجود ال Hints او Warnings عند القيام بعملية الحساب او ال Code Profiling