首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于OSX的Delphi gettimeofday (相当于win下的timeGetTime )

用于OSX的Delphi gettimeofday (相当于win下的timeGetTime )
EN

Stack Overflow用户
提问于 2013-02-27 11:45:53
回答 1查看 608关注 0票数 1

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

我以前在OSX中使用过gettimeofday来获得一个高精度的定时器,但在Delphi XE3中找不到任何对它的引用。

寻找有关如何在Delphi中调用此函数的帮助,或者使用另一种跨平台方式来获取高分辨率计时器。我想要毫秒的准确性(我知道它依赖于操作系统)。

提前谢谢你,马丁

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-27 12:32:54

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

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

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

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15103816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档