如果你在同一台机器上用两个不同的用户分别运行同一个测试程序,时间相差了5%,你会怎么想?
很可能大多数人都不会觉得这有什么,现在的操作系统都是多任务系统,5%根本不算什么误差。
但是Peter F. Sweeney不这么想。
他把这两个程序反复运行了多次,发现某一个用户的运行速度总是快于另一个用户。进一步深入研究发现,引起这个现象的原因是因为这两个用户的用户名长度不同。Linux运行程序时需要先把用户的home目录压栈,长度比较长的会占用比较多的栈空间,这就导致默认的栈空间不够,系统需要一个额外的重新分配栈的步骤。
而这个结论推翻了他们准备撰写的一篇论文。他们认为一个算法比另一个算法更好,其实只是刚好运行程序的用户名长度更适合前一个算法罢了。
如果这个故事到这里就结束了,这也就不过是一个科学家严肃认真做实验的故事。
但是Peter F. Sweeney并没有在这里就停止。
他开始思考,这些我们平时没有在意的东西,比如用户名的长度,比如系统当前的目录结构,比如链接文件的顺序,对于程序的运行速度到底能产生多大影响?
研究的结果是,这些因素很多都能对程序运行速度产生巨大影响,部分因素产生的影响高达20%!
这是一个非常惊人的结论,因为在编译器优化领域,往往程序运行效率提高了5%就被认为是重大贡献。而这个结论意味着,这些重大贡献可能根本就不是贡献,他们只不过刚好适应了做实验机器的环境因素罢了。
Peter把这些因素称作“观察者效应(Observer Effect)”,他撰写了一系列论文来讨论观察者效应。当他在世界各地讲解观察者效应的时候,每一次演讲都引起轰动。
对于观察者效应的探讨甚至开启了一个新的研究领域。今年第一届观察者效应讨论会将随着OOPSLA一起召开,来自全球的研究人员将一起讨论观察者效应对于当前研究产生的影响,以及如何控制和消除观察者效应。
写这篇文章,并不是想要再重复一个从实验误差中作出发现的故事,这样的故事从小到大我们已经听了太多太多。也不是想要大家在做实验时注意用户名长度,文件链接顺序等等因素,毕竟对于大多数领域来说这些因素起的作用还不那么明显。只是期望,当很多同学还在精心设计实验以期望获得“自己的方法比别人好”的结论时,或者重做效果不好的实验以帮助发表论文时,想想世界上其他的科学家们是用什么态度对待实验和实验数据的。
https://blog.sciencenet.cn/blog-211989-332901.html
上一篇:
为《国家中长期教育改革和发展规划纲要》贡献意见下一篇:
P不等于NP被证明!