Calculating the speed of routines?

后端 未结 8 723
自闭症患者
自闭症患者 2020-12-08 00:26

What would be the best and most accurate way to determine how long it took to process a routine, such as a procedure of function?

I ask because I am currently trying

相关标签:
8条回答
  • 2020-12-08 01:20

    Here are some procedures I made to handle checking the duration of a function. I stuck them in a unit I called uTesting and then just throw into the uses clause during my testing.

    Declaration

      Procedure TST_StartTiming(Index : Integer = 1);
        //Starts the timer by storing now in Time
        //Index is the index of the timer to use. 100 are available
    
      Procedure TST_StopTiming(Index : Integer = 1;Display : Boolean = True; DisplaySM : Boolean = False);
        //Stops the timer and stores the difference between time and now into time
        //Displays the result if Display is true
        //Index is the index of the timer to use. 100 are available
    
      Procedure TST_ShowTime(Index : Integer = 1;Detail : Boolean = True; DisplaySM : Boolean = False);
        //In a ShowMessage displays time
        //Uses DateTimeToStr if Detail is false else it breaks it down (H,M,S,MS)
        //Index is the index of the timer to use. 100 are available
    

    variables declared

    var
      Time : array[1..100] of TDateTime;
    

    Implementation

      Procedure TST_StartTiming(Index : Integer = 1);
      begin
        Time[Index] := Now;
      end; 
    
      Procedure TST_StopTiming(Index : Integer = 1;Display : Boolean = True; DisplaySM : Boolean = False);
      begin
        Time[Index] := Now - Time[Index];
        if Display then TST_ShowTime;
      end;
    
      Procedure TST_ShowTime(Index : Integer = 1;Detail : Boolean = True; DisplaySM : Boolean = False);
      var
        H,M,S,MS : Word;
      begin
        if Detail then
          begin
            DecodeTime(Time[Index],H,M,S,MS);
            if DisplaySM then
            ShowMessage('Hour   =   ' + FloatToStr(H)  + #13#10 +
                        'Min     =   ' + FloatToStr(M)  + #13#10 +
                        'Sec      =   ' + FloatToStr(S)  + #13#10 +
                        'MS      =   ' + FloatToStr(MS) + #13#10)
            else
            OutputDebugString(PChar('Hour   =   ' + FloatToStr(H)  + #13#10 +
                        'Min     =   ' + FloatToStr(M)  + #13#10 +
                        'Sec      =   ' + FloatToStr(S)  + #13#10 +
                        'MS      =   ' + FloatToStr(MS) + #13#10));
          end
        else
          ShowMessage(TimeToStr(Time[Index]));
          OutputDebugString(Pchar(TimeToStr(Time[Index])));
      end;
    
    0 讨论(0)
  • 2020-12-08 01:20

    Use this http://delphi.about.com/od/windowsshellapi/a/delphi-high-performance-timer-tstopwatch.htm

    0 讨论(0)
提交回复
热议问题