如何解决确定性地估计运行时间
我有一个 C++ 函数可以编译为 x86-64 机器码,我想测量它在给定输入上的运行时间。我想知道何时更改我的代码会导致性能下降,因此我想在 CI 中运行此基准测试并测试该函数最多需要 X 毫秒来运行。
然而,执行时间是不确定的,所以这样的测试会不稳定。
有什么工具可以使这个测试具有确定性?我会想象这样的工具会给出执行时间的确定性估计(在给定的时钟频率和给定的 RAM 时钟/延迟的给定 CPU 模型上),通过在模拟器中运行代码并使用一些启发式来近似总运行时间。
(一个简单的启发式方法是计算已停用的机器指令并假设每条指令为 Y ns,但更复杂的方法还会查看内存访问和模型缓存命中/未命中。我没有看到为什么这样的技术原因考虑到现代 CPU 架构的复杂性和它们支持的指令集的大小,除了编写一个能够获得接近准确的估计值的工具之外,这个工具是不存在的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。