gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:43:56 25 4
gpt4 key购买 nike

我做什么:

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(),请参阅 How do I measure time elapsed in 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

关于java - c++ 中的 clock() 时间与 java 中的 System.CurrentTimeMillis() 之间的时差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35811957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com