当前位置 : 主页 > 网络安全 > 测试自动化 >

性能 – 对CPU绑定算法/实现进行基准测试

来源:互联网 收集:自由互联 发布时间:2021-06-22
假设我用编译语言(例如C)编写自己的StringBuilder. 衡量各种实施性能的最佳方法是什么?简单地计时几十万次运行会产生高度不一致的结果:从一批到另一批的时间差异可能高达15%,因此
假设我用编译语言(例如C)编写自己的StringBuilder.

衡量各种实施性能的最佳方法是什么?简单地计时几十万次运行会产生高度不一致的结果:从一批到另一批的时间差异可能高达15%,因此无法准确评估潜在的性能改进,从而使性能提升小于此.

我做了以下事情:

>禁用SpeedStep
>使用RDTSC进行计时
>以实时优先级运行流程
>将亲和力设置为单个CPU核心

这有点稳定了结果.还有其他想法吗?

精确测量一段代码真的很难.对于这些要求,我建议您查看 Agner Fog’s test suite.通过使用它,您可以测量时钟周期并收集一些重要因素(例如缓存未命中,分支错误预测等).

另外,我建议你从Agner的网站上看一下PDF document.这是一个非常宝贵的文档,可以实现这样的微优化.

另外,实际性能不是“时钟周期”的函数.缓存未命中可以改变实际应用程序中每次运行的所有内容.所以,我会首先优化缓存未命中.只需为相同的内存部分多次运行一段代码,就可以大大减少缓存未命中.因此,它很难精确测量.整个应用程序调整通常是更好的想法IMO.英特尔VTune和其他工具非常适合这种用法.

网友评论