先说软件本身的影响,有些程序自身会受操作系统的影响,比如一些多线程程序或者是需要申请资源的程序,因为资源的有限性,每次申请时会存在排队现象,就导致每次执行的速度不一样;还有一些程序会受外界环境的影响,比如程序中存在一些随机过程,某部分代码运行次数是一个随机数,这样也会导致每次运行速度不一样。以上两种情况,即使是同样的IDE生成可执行程序,每次的运行速度也不一样。见下图的线程调度过程。
还有一种是IDE的影响,这个要从编译过程说起,见下图:
每个现代编译器都会有一个优化器,会在生成最终的可执行文件之前对程序进行优化。即使使用同一个IDE编译同样的程序,不同的优化等级生成的应用程序运行速度也会不一样。此外,因为每种IDE(更准确地说是编译器)的优化算法都不太一样,所以不同的IDE,即使使用同样的优化等级,生成的应用程序运行速度也会不一样。下图是VS中的代码优化选项:
还有一种情况是程序中使用了库文件,因为同样的库,在不同的IDE中实现细节是有差别的,这种情况也有可能造成运行速度不一样。
总之,程序的运行速度受操作系统、IDE、引用库文件、外部环境等多种因素的影响,它们组合起来就会导致即使同样的代码也会运行速度不一致。但是一般来说,可以通过观察程序多次的运行情况,然后根据平均值来比较,对于同样的硬件平台,只要差别不超过10%(和物理学中的误差类似),就可以认为两个的速度是一致的。