我有一个编译为 x86-64 机器代码的 C++ 函数,我想测量它在给定输入上的运行时间。我希望能够知道何时更改我的代码会导致性能下降,因此我想在 CI 中运行此基准测试并测试该函数最多需要 X 毫秒才能运行。
但是,执行时间是不确定的,所以这样的测试会很不稳定。
有没有我可以用来使这个测试具有确定性的工具?我想通过在模拟器中运行代码并使用一些启发式方法来近似总时间,我想这样的工具将给出执行时间的确定性估计(在给定的 CPU 模型上以给定的时钟速率和给定的 RAM 时钟/延迟)运行时间。
(一个简单的启发式方法是计算机器指令退役并假设每条指令 Y ns,但更复杂的方法也将查看内存访问和模型缓存命中/未命中。我看不出这种工具不能的技术原因t 存在,除了考虑到现代 CPU 架构的复杂性和它们支持的指令集的大小,编写一个得到接近准确的估计值的程序会很棘手。)