时钟()时间之间的时差,单位为c++;java中的System.CurrentTimeMillis()和System.CurrentTimeMillis()

时钟()时间之间的时差,单位为c++;java中的System.CurrentTimeMillis()和System.CurrentTimeMillis(),java,c++,Java,C++,我的工作: < > 1。我用java语言调用了一个C++方法,用SWIG中间文件生成包装器。 2。在C++代码中使用CordOn()时间,计算C++中方法写的总时间(从开始到结束的不同)。 3.在java中,我使用System.CurrentTimeMillis()计算调用该方法所需的时间 我必须知道的是: 在毫秒内计算这两个差时,发现在调用java中的方法时C++内部的时间差大于时差。 1.从java调用方法所花费的时间如何小于方法内部所花费的总时间 2.clock()时间和System.C

我的工作:

< > 1。我用java语言调用了一个C++方法,用SWIG中间文件生成包装器。 <> 2。在C++代码中使用CordOn()时间,计算C++中方法写的总时间(从开始到结束的不同)。 3.在java中,我使用System.CurrentTimeMillis()计算调用该方法所需的时间

我必须知道的是:

在毫秒内计算这两个差时,发现在调用java中的方法时C++内部的时间差大于时差。 1.从java调用方法所花费的时间如何小于方法内部所花费的总时间


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

请注意,我不是Java程序员

1)
System.currentTimeMillis
clock

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

在Java方面,您应该使用
System.nanoTime()
,请参阅

2)
时钟
在不同平台上的定义不同

简单地说,
clock
返回墙时间还是CPU时间取决于您所在的平台

要匹配
System.nanoTime()
来测量CPU时间,请将
std::clock
std::chrono::high_resolution_clock
一起使用。您可以在此处看到一个工作示例:

是的,currentTimeMillis更新不如nanoTime(但效率更高)。时钟与纳米时间更为兼容。@JoopEggen但是
clock
实际测量的内容在Windows和Linux之间有所不同,在Windows上它测量时钟时间(“实时”),在Linux上它测量CPU时间。如果进行了任何睡眠,平台之间的测量结果将大相径庭。感谢回复@058094041@CibinWilliam谢谢你回来接受:)
       clock_t start=clock();
       clock_t end=clock();
       double elapsed_secs = double(end - start) / (CLOCKS_PER_SEC)*1000;