[英]Time difference between clock() time in c++ and System.CurrentTimeMillis() in java
我所做的:
1.我使用swig中间文件生成包装器,从java中调用了c ++方法。
2.我在c ++代码中使用clock()时间来计算c ++中的方法writtern所花费的总时间(从开始到结束的时间差)。
clock_t start=clock();
clock_t end=clock();
double elapsed_secs = double(end - start) / (CLOCKS_PER_SEC)*1000;
3.在java中,我使用System.CurrentTimeMillis()来计算调用该方法所花费的时间。
我要知道的是:
当计算两者的差值(以毫秒为单位)时,发现在c ++中占用的时间差大于在Java中调用该方法时的时间差。
1,从Java调用方法所花费的时间比在方法内部所花费的总时间少吗?
2. clock()时间和System.CurrentTimeMillis()之间是否有区别?
请注意,我不是Java程序员。
1) System.currentTimeMillis
与clock
不具有可比性
根据实现方式(请参见2), clock
将(大致)返回程序已执行了多长时间。 System.currentTimeMillis
返回UNIX时间(以毫秒为单位),与clock
相比不太正确。 还值得一提的是currentTimeMillis
也依赖于平台。
在Java方面,您应该使用System.nanoTime()
,请参阅如何测量在Java中经过的时间?
2) clock
在不同平台上的定义不同。
简而言之, clock
返回的是Wall Time还是CPU Time取决于您所使用的平台。
要匹配System.nanoTime()
以测量CPU时间,请使用std::clock
和std::chrono::high_resolution_clock
。 您可以在此处看到一个有效的示例: http : //en.cppreference.com/w/cpp/chrono/c/clock
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.