繁体   English   中英

C ++中Clock()时间与Java中System.CurrentTimeMillis()之间的时差

[英]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.currentTimeMillisclock不具有可比性

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

在Java方面,您应该使用System.nanoTime() ,请参阅如何测量在Java中经过的时间?

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

简而言之, clock返回的是Wall Time还是CPU Time取决于您所使用的平台。

要匹配System.nanoTime()以测量CPU时间,请使用std::clockstd::chrono::high_resolution_clock 您可以在此处看到一个有效的示例: http : //en.cppreference.com/w/cpp/chrono/c/clock

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM