从mac osx上的免费pascal访问系统时钟?

时间:2016-04-02 13:29:48

标签: macos clock freepascal

我想要做的就是获取系统时钟值,以便我可以测量它们之间的时间,以便使用Mac上的Free Pascal和OSX来比较备用编码的速度。

免费Pascal的文档更多地是关于日期和总时间戳,而不是关于系统时钟,据我可以从他们的在线文档中收集。系统时钟值会更精确。

我在stackoverflow中的研究发现没有什么特定于我的情况。

我已经能够在本机OSX应用程序中使用Xcode执行此操作,但由于其跨平台可移植性,我希望将Free Pascal用于此应用程序。

有没有人发现如何做我需要的?谢谢。

2 个答案:

答案 0 :(得分:0)

这个函数是gettickcount64,但是还没有在OS X上切换到clock_gettime(CLOCK_MONOTONIC)但仍然使用fpgettimeofday

似乎mach_absolute_time没有暴露在任何地方,但您可以自己声明导入。您还可以检查碳系统功能的univint标头。也许其中一个MIDI或(核心)音频标题有精确计时的东西

答案 1 :(得分:0)

所以我通过编写一个使用内联汇编程序代码的函数来解决我的问题。计数器的低阶longint部分足以满足我的需要。如果计数器在测试运行期间发生累积到高位32位,我从结束值减去开始将得到否定答案,所以我再次运行测试。不幸的是,时钟滴答差异包括后台进程中的滴答,因此我需要在测试期间最小化活动进程。

        function HdweTick: int64;
        type  truc = record
                case ovlay: integer of
                0: (eax, edx :longint);
                1: (val64    :int64  );
              end;
        var   trec :truc;
        begin
            asm
                RDTSC
                movl %eax,trec.eax
                movl %edx,trec.edx
            end;
            HdweTick := trec.val64;
        end;

如果你真的需要64位时钟滴答计数,你可以这样做:

kivy.uix.widget.Widget