我的所作所为:
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()之间有什么区别吗?
答案 0 :(得分:2)
请注意我不是Java程序员。
1)System.currentTimeMillis
与clock
根据实现(参见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::clock
与std::chrono::high_resolution_clock
一起使用。你可以在这里看到一个有效的例子:
http://en.cppreference.com/w/cpp/chrono/c/clock