我正在尝试分析一些函数,这些函数以不同的方式实现相同算法的不同版本。 我增加了每个函数运行的次数,这样在单个函数中花费的总时间大约是1分钟(以揭示性能差异)。
现在,运行几次测试会产生令人困惑的结果。 在同一函数的多次执行之间存在巨大的可变性(+ – 50%),并且因此确定哪个函数最快(这是测试的目标)几乎是不可能的。
在运行测试之前,我应该注意一些特殊的事情吗?这样我可以获得更平滑的测量结果吗? 如果不这样做,是多次运行测试并计算每个函数的平均值?
有很多事情需要检查!
首先,确保您的函数实际上是CPU绑定的。 如果是这样,请确保已禁用(在BIOS中)所有CPU限制,turbo模式和省电模式以进行测试。 如果仍有问题,请尝试将流程固定到单个核心。 也许也禁用超线程。
所有这一切的目标是确保您的代码在单个核心上运行热,而不会造成太多中断。 如果您使用的是Linux,则可以从可用内核的操作系统列表中删除单个内核并使用该内核(因此不会对该内核造成干扰)。
多次运行测试是一个好主意,但使用平均值(算术平均值)不是。 相反,使用不受exception值影响的中位数或最小值或其他一些测量值。 通常,偶尔的长测试运行可以完全抛弃(除非你正在建立一个实时系统!)。
以上就是c/c++开发分享为短代码获得可靠的性能测量相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/549298.html