• delphi 时间


    DELPHI高精度计时方法

    //取毫秒级时间精度(方法一):
      var
        t1,t2:int64;
        r1:int64;
      begin
        t1:=GetTickCount;//获取开始计数 WINDOWS API
        sleep(1000);{do...}//执行要计时的代码
        t2:=GetTickCount;//获取结束计数值
        r1:=t2-t1;//取得计时时间,Y\`国4~络(}.u_%t"hV单位毫秒(ms)
        showmessage(inttostr(r1));
      end;
    
      //取毫秒级时间精度(方法二):
      //use DateUtils;//引用DateUtils单位
      var
        t1,t2:tdatetime;
        r1:int64;
      begin
        t1:=now();//获取开始计时时间
        sleep(1000);{do...}//执行要计时的代码
        t2:=now();//获取结束计时时间
        r1:=SecondsBetween(t2,t1);//取得计时时间,D6k=+W的TsoUbP育_II单位秒(s)
        r1:=MilliSecondsBetween(t2,t1);//取得计时时间,
    
      单位毫秒(ms)
        showmessage(inttostr(r1));
      end;
    
      //注:以上两种方式经本人测试好像只能产生0.01秒的计时精度
    
      //取系统级时间精度:
      var
        c1:int64;
        t1,t2:int64;
        r1:double;
      begin
        QueryPerformanceFrequency(c1);//WINDOWS API   返回计数频率(Intel86:1193180)(获得系统的高性能频率计数器在一毫秒内的震动次数)
        QueryPerformanceCounter(t1);//WINDOWS API 获取开始计数值
        sleep(1000);{do...}//执行要计时的代码
        QueryPerformanceCounter(t2);//获取结束计数值
        r1:=(t2-t1)/c1;//取得计时时间,
    
    
      单位秒(s)
        r1:=(t2-t1)/c1*1000;//取得计时时间,单位毫秒(ms)
        r1:=(t2-t1)/c1*1000000;//取得计时时间,单位微秒
        showmessage(floattostr(r1));
      end;
    View Code

    delphi 延迟函数

    //延迟函数:方法一
    procedure delay(msecs:integer);
    var 
      Tick: DWord; 
      Event: THandle; 
    begin 
      Event := CreateEvent(nil, False, False, nil); 
      try 
        Tick := GetTickCount + DWord(msecs); 
        while (msecs > 0) and (MsgWaitForMultipleObjects(1, Event, False, msecs, QS_ALLINPUT) <> WAIT_TIMEOUT) do 
        begin 
          Application.ProcessMessages; 
          msecs := Tick - GetTickcount; 
        end; 
      finally 
        CloseHandle(Event); 
    end; 
    
    
    
      
    //延迟函数:方法二
    procedure Delay(dwMilliseconds:DWORD);//Longint
    var
    iStart,iStop:DWORD;
    begin
        iStart :=   GetTickCount;
        repeat
        iStop  :=   GetTickCount;
        Application.ProcessMessages;
        until (iStop  -  iStart) >= dwMilliseconds;
    end;
    
    
    方法三
    procedure delay(msecs:integer); //延迟函数 比sleep好
    var
    Tick: DWord;
    Event: THandle;
    begin
    Event := CreateEvent(nil, False, False, nil);
    try
    Tick := GetTickCount + DWord(msecs);
    while (msecs > 0) and (MsgWaitForMultipleObjects(1, Event, False, msecs, QS_ALLINPUT) <> WAIT_TIMEOUT) do
    begin
    Application.ProcessMessages;
    msecs := Tick - GetTickcount;
    end;
    finally
    CloseHandle(Event);
    end;
    View Code

    一段代码执行消耗的时间

     关键是用到一个库函数GetTickCount
    
    【函数名】 GetTickCount
    
    【返回值】 Long,以毫秒为单位
    
    通常用来计算某个操作所使用的时间: 
    var:
    
        start_time : LONG;
    
        stop_time:LONG;
    
    begin:
    start_time :=GetTickCount;
    
    调用接口操作
    stop_time :=GetTickCount;
    
    ShowMessage( IntToStr(stop_time - art_time));
    end;
    View Code

    获取系统时间

    var
    DateTime:TDateTime;
    i:string;
    begin
    DateTime:=now;
    i:=DateToStr(DateTime)+' '+TimeToStr (DateTime);
    lable1.caption:=i;
    
    
    FormatDateTime('hh:nn:ss',Now());
    FormatDateTime('yyyy年mm月dd日 hh时nn分ss秒zzzz',now());
    
    var
    DateTime:TDateTime;
    i:string;
    ct:TSystemTime;
    begin
    DateTime:=now;
    i:=DateToStr(DateTime)+' '+TimeToStr (DateTime);
    //Label1.caption:=i;
    //Label1.caption:=FormatDateTime('yyyy年mm月dd日 hh时nn分ss秒zz',now());
    //GetSystemTime();
    //GetLocalTime(ct);
    //Label1.caption:=GetSystemTime(ct);//FormatDateTime('yyyy年mm月dd日 hh时nn分ss秒zz',GetSystemTime(ct));
    end;
    View Code
  • 相关阅读:
    【飞谷六期】爬虫项目3
    Design Pattern
    Markdown
    Git
    Storm-源码分析汇总
    Storm-源码分析-acker (backtype.storm.daemon.acker)
    Storm-源码分析-Topology Submit-Executor
    Storm-源码分析-Topology Submit-Executor-mk-threads
    Storm-源码分析- bolt (backtype.storm.task)
    Storm-源码分析- spout (backtype.storm.spout)
  • 原文地址:https://www.cnblogs.com/blogpro/p/11345349.html
Copyright © 2020-2023  润新知