在c ++中,什么是一个很好的可移植方式(可能使用一些库)来获取自应用程序启动以来的时间,其精度至少为亚毫秒级?
谢谢!
编辑:由于在所有平台上都无法达到亚毫秒级,那么可能以最准确的方式获得它的方式是什么?
答案 0 :(得分:2)
Boost Date Time可以提供帮助,但正如Damon在评论中已经指出的那样,这是一个相当依赖于平台的问题,而且您的最低要求比最广泛使用操作系统可以支持的要求更为严格。
因此,Boost提供的抽象是有帮助的。当然还有无数其他库,但Boost Date Time库有纳米秒分辨率的选项(如果可用),但您需要在构建时启用它:
编译选项
默认情况下 posix_time系统使用单个64位 整数内部提供一个 微秒级分辨率。作为一个 替代方案,64位的组合 整数和32位整数(96位 决议)可以用来提供 纳秒级分辨率。该 默认实现可能提供 更好的性能和更紧凑 许多应用程序的内存使用 不需要纳秒 分辨率。
使用替代分辨率(96 位纳秒)变量 BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG 必须在库用户中定义 项目文件(即Makefile,Jamfile, 等等)。该宏未被使用 格列高利制度因此没有 建立图书馆时的效果。
答案 1 :(得分:1)
查看clock_t clock ( void );
中包含的time.h
。它返回自程序启动以来经过的时钟周期数。
有关详细信息,请查看this link。