c ++中clock()时间与java中System.CurrentTimeMillis()之间的时差

时间:2016-03-05 08:36:19

标签: java c++

我的所作所为:

1.我通过使用swig中间文件生成包装器从java调用了c ++方法。

2.我在c ++代码中使用了clock()时间来计算c ++中方法writtern的总时间(从开始到结束的差异)。

object.propertyName or object["propertyName"]

3.在java中,我使用 System.CurrentTimeMillis() 来计算调用方法所需的时间。

我必须知道的事情:

当计算两个差异(以毫秒为单位)时,发现在java中调用方法时,c ++内部的时间差大于时差。

1.从java调用方法所花费的时间是否少于方法内部的时间?

2. clock()时间和System.CurrentTimeMillis()之间有什么区别吗?

1 个答案:

答案 0 :(得分:2)

请注意我不是Java程序员。

1)System.currentTimeMillisclock

不相上下

根据实现(参见2),clock将(大致)返回程序执行的时间。 System.currentTimeMillis以毫秒为单位返回UNIX时间,与clock相比,这是不正确的。值得一提的是currentTimeMillis也取决于平台。

在Java方面,您应该使用System.nanoTime(),请参阅How do I measure time elapsed in Java?

2)clock在不同平台上的定义不同。

简单地说,clock是否返回壁垒时间或CPU时间取决于您所使用的平台。

要匹配System.nanoTime()以衡量CPU时间,请将std::clockstd::chrono::high_resolution_clock一起使用。你可以在这里看到一个有效的例子: http://en.cppreference.com/w/cpp/chrono/c/clock