gpt4 book ai didi

c++ - C++中void函数的重复计时

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:08:48 24 4
gpt4 key购买 nike

我正在尝试为 void 函数计时

for (size_t round = 0; round < 5; round++) {
cpu_time_start = get_cpu_time();
wall_time_start = get_wall_time();

scan.assign_clusters(epsilon, mu);

cpu_time_end = get_cpu_time();
wall_time_end = get_wall_time();
...
}

第一个计时产生 300 秒,而接下来的四个计时产生 0.000002 秒。这表明对 assign_clusters 的 void 函数调用已被优化。我怎样才能强制我的程序每次都执行这个耗时的函数调用,同时仍然对其余代码进行优化?

我通常做的是保存相关函数的结果然后打印它,但由于这是一个 void 函数,我是否有相同的选项?

我使用以下优化标志:-std=c++0x -march=native -O2

最佳答案

这取决于需要花时间进行修复。

这可能是由于:-

  1. 加载服务。您的集群可能是基于数据库的,并且需要启动数据库服务(第一次)
  2. 磁盘缓存。操作系统会记住它已读取的数据,并能够像在内存中一样提供数据。
  3. 内存缓存。 CPU 有不同的可用内存速度,两次使用相同的内存,第二次会更快。
  4. 状态缓存。数据可能处于更适合后续运行的状态。这可以被认为是对数组进行两次排序。第二次已经排序,可以产生提速。

服务启动可以是几秒。

磁盘缓存大约提速 20 倍。内存缓存大约 6 倍加速状态缓存,可以是无界的。

我认为您的代码需要重置扫描对象,以确保它再次完成工作

关于c++ - C++中void函数的重复计时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33798119/

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