我怎么叫clock()
的C++
?
例如,我想测试线性搜索在数组中查找给定元素所花费的时间.
在Windows上,clock()
以毫秒为单位返回时间,但是在我正在处理的这个Linux机器上,它将它舍入到最接近的1000,因此精度仅为"秒"级别而不是毫秒级别.
我找到了一个使用QTime
该类的Qt解决方案,实例化一个对象并调用start()
它然后调用elapsed()
以获得经过的毫秒数.
我有点幸运,因为我开始使用Qt,但我想要一个不依赖第三方库的解决方案,
有没有标准的方法来做到这一点?
UPDATE
请不要推荐Boost ..
如果Boost和Qt可以做到这一点,那肯定不是魔术,必须有他们正在使用的标准!
我已经正确更改了docker容器的时区.我是否需要在docker容器中安装NTP服务器以定期同步时间,否则容器将从主机同步时间?
几年前,"下一件大事"是无时钟电脑.它背后的想法是没有时钟,处理器运行速度会明显加快.
就在那时,现在是这样,我找不到任何有关它是如何出现的信息,或者这个想法是不是真的...
谁知道?
以供参考:
http://www.cs.columbia.edu/~nowick/technology-review-article-10-01.pdf
C++编程语言第4版,第225页读取:只要结果与简单执行顺序的结果相同,编译器就可以重新排序代码以提高性能.一些编译器,例如发布模式下的Visual C++,将重新排序此代码:
#include <time.h>
...
auto t0 = clock();
auto r = veryLongComputation();
auto t1 = clock();
std::cout << r << " time: " << t1-t0 << endl;
Run Code Online (Sandbox Code Playgroud)
进入这种形式:
auto t0 = clock();
auto t1 = clock();
auto r = veryLongComputation();
std::cout << r << " time: " << t1-t0 << endl;
Run Code Online (Sandbox Code Playgroud)
这保证了与原始代码不同的结果(零与大于零的时间报告).有关详细示例,请参阅我的其他问题 这种行为是否符合C++标准?
在通过MacPorts安装必要的库后编译我在Mac OS X上编写的程序时,我收到此错误:
In function 'nanotime':
error: 'CLOCK_REALTIME' undeclared (first use in this function)
error: (Each undeclared identifier is reported only once
error: for each function it appears in.)
Run Code Online (Sandbox Code Playgroud)
它似乎clock_gettime
没有在Mac OS X中实现.是否有另一种方法可以在纳秒内获得纪元时间?不幸的是在几微秒内.gettimeofday
对于算法的计时(大约以ms为单位),这两种方法中的哪一种更好:
clock_t start = clock();
algorithm();
clock_t end = clock();
double time = (double) (end-start) / CLOCKS_PER_SEC * 1000.0;
Run Code Online (Sandbox Code Playgroud)
要么,
time_t start = time(0);
algorithm();
time_t end = time(0);
double time = difftime(end, start) * 1000.0;
Run Code Online (Sandbox Code Playgroud)
另外,根据Freenode的C++频道中的一些讨论,我知道时钟的分辨率非常差,因此(相对)快速算法的时序将为零.但是,哪个有更好的分辨率time()或clock()?还是一样吗?
我想记录真实壁挂时间有多长.目前我这样做:
startTime = time.time()
someSQLOrSomething()
print "That took %.3f seconds" % (time.time() - startTime)
Run Code Online (Sandbox Code Playgroud)
但是如果在SQL查询(或其他任何东西)运行时调整时间,则会失败(产生不正确的结果).
我不想只是对它进行基准测试.我想在实时应用程序中记录它,以便查看实时系统的趋势.
我想要像clock_gettime(CLOCK_MONOTONIC,...)这样的东西,但是在Python中.并且最好不必编写调用clock_gettime()的C模块.
我正在使用VirtualBox在Vagrant内部运行基于Ubuntu 12.04的盒子.到目前为止,一切都很好 - 除了一件事:
我们假设VM正在运行.然后,主机进入待机模式.在再次唤醒之后,VM仍在运行,但其内部时钟继续在主机发生故障时停止的位置.所以这基本上意味着:让主机进入睡眠状态15分钟,再次唤醒,然后VM的内部时钟延迟15分钟.
我该如何解决这个问题(由于明显的原因,手动设置时间不是一个选项;-))?有没有办法在主机系统更改其状态时在Vagrant VM内运行脚本?
我在文档中读到,默认情况下,VirtualBox Guest Additions每隔10秒与主机同步一次.显然这没有发生,但我找不到它被禁用的任何地方.那么任何想法?
PS:安装Guest Additions并匹配正在使用的VirtualBox版本.
clock ×10
c++ ×4
benchmarking ×2
time ×2
timer ×2
asynchronous ×1
c ×1
cpu ×1
docker ×1
java ×1
linux ×1
macos ×1
ntp ×1
optimization ×1
processor ×1
python ×1
timezone ×1
timing ×1
vagrant ×1
virtualbox ×1