Delphi gettimeofday for OSX(相当于winG下的timeGetTime)

时间:2013-02-27 03:45:53

标签: macos delphi timer cross-platform delphi-xe3

我正在转换一个线程计时器池单元以供跨平台使用。 当前单位使用timeGetTime来确保高精度,并报告调用计时器事件时的实际经过时间间隔。

我之前在OSX中使用过gettimeofday来获得高分辨率计时器,但是找不到任何对它的引用以便在Delphi XE3中使用。

寻求帮助,我可以用Delphi或其他跨平台方式调用它来获得高分辨率计时器。我想要ms准确度(我知道它依赖于操作系统)。

先谢谢,马丁

1 个答案:

答案 0 :(得分:1)

更好的选择,多平台就绪,可能是使用TStopWatch单元中的System.Diagnostics记录。

TStopWatch是真正的高分辨率计时器(如果可用),在这种情况下具有接近纳秒精度(取决于操作系统和硬件),如果不可用(在Windows中)使用标准计时器功能提供毫秒级精度

如果只需要毫秒精度,请使用ElapsedMilliseconds属性,如下所示:

var
  sw : TStopWatch;
  ElapsedMilliseconds : Int64;
begin
  sw := TStopWatch.Create() ;
  try
    sw.Start;
    Whatever();
    sw.Stop;

    ElapsedMilliseconds := sw.ElapsedMilliseconds;
  finally
    sw.Free;
  end;
end;

TStopWatch依赖于Windows中的QueryPreformanceFrequency / QueryPerformanceCounter函数和OS-X上的mach_absolute_time