1 引言
在一篇比较早的名为《Producing Wrong Data Without Doing Anything Obviously Wrong!》的程序性能测试的文章中提到:
The measurement bias due to link order is significant.(链接顺序导致的偏差非常大)
Changing link order also caused measurement bias on the simulator.(更改链接顺序也会导致模拟器上的测量偏差)
而且,在不改代码的情况下,调整不同的编译顺序,对程序的性能影响居然能在5%以上。很是吃惊!那反过来,我们就可以就编译顺序的优化来提升程序的性能。
2 原文地址
原文章的链接地址:
https://users.cs.northwestern.edu/~robby/courses/322-2013-spring/mytkowicz-wrong-data.pdf
3 性能测试示例
非专业人员不好测出真实可靠的数据,还是引用原文中的测试数据。
这张图是探索链接顺序对程序加速的影响。为了获得这些数据,作者编译了程序33次;第一次使用默认链接顺序(由make文件指定),第二次使用字母链接顺序(即.o文件以字母顺序链接),剩下的随机使用生成的链接顺序。图2(a)中的点(x,y)表示尝试的第x个链接顺序,O3的加速比为y。对于每一点,分别用O2和O3进行了五次跑步;得出的平均值在95%的区间。