【发布时间】:2020-07-10 12:11:11
【问题描述】:
我对包含范围 [1, 10000] 中所有唯一元素的数组执行线性搜索,按所有搜索值的升序排序,即从 1 到 10000,并绘制运行时与搜索值的关系图,如下所示:
仔细分析放大版的情节如下:
我发现一些较大的搜索值的运行时间小于较小的搜索值,反之亦然
我对这种现象的最佳猜测是它与 CPU 如何使用主内存和缓存处理数据有关,但没有可靠的可量化理由来解释这一点。
任何提示将不胜感激。
PS:代码是用 C++ 编写的,并在 linux 平台上执行,该平台托管在 Google Cloud 上具有 4 个 VCPU 的虚拟机上。运行时间是使用 C++ Chrono 库测量的。
【问题讨论】:
-
你的定时器的精度是多少?一个简单的解释是,离散化是计时器分辨率的直接结果(以及基于环境变量(如系统负载)的预期运行时微小扰动。)
-
我在 C++ 中使用 Chrono 来测量运行时@ldog
标签: algorithm caching runtime ram processor