我正在尝试计算一个无效函数
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
答案 0 :(得分:2)
这取决于花时间做出修复。
这可能是由以下原因引起的: -
服务启动可以是几秒钟。
磁盘缓存加速约20倍。 内存缓存大约加快6倍 状态缓存,可以是无限的。
我认为您的代码需要重置扫描对象,以确保它再次完成工作