قياس الزمن
#1
السلام عليكم ورحمة الله وبركاته

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

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

بارك الله فيكم وزادكم علما
كن متواضعا ولا تكن متكبرا // الصبر + المثابرة = النجاح
الرد
#2
باستخدام الأمر 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
الرد
#3
وعليكم السلام ورحمة الله وبركاته
'آينشتاين' هنا ويسأل عن "قياس الزمن" 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; 
نشكر الأستاذ خالد الشقروني على مساهماته في المنتدى
جزاك الله خيرا أستاذ ونفع الله بعلمك
بالتوفيق.
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
الرد
#4
السلام عليكم ورحمة الله وبركاته

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

اخي انشتاين مبتدئ في لغة الذلفي عندما يجمع كم من المعلومات سوف ترى من هو اقوى من انشتاين :crazy::crazy:
سلام والله انا سعيد بوجودكم معنا
كن متواضعا ولا تكن متكبرا // الصبر + المثابرة = النجاح
الرد
#5
في دلفي 2010 توجد TStopwatch لغرض قياس الزمن، ولكن يجب الانتباه لبعض القضايا فيها.
راجع تقرير الثغرة:
كود :
http://qc.embarcadero.com/wc/qcmain.aspx?d=77628
الرد
#6
اخي الكريم هناك مايسمى بال Code Profiling يستعمل لهذا الغرض .
حاول مثلا استعمال :
prodelphi هو تقريبا الاكثر استعمالا .

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

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

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

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

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

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

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


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم