這個世界上很少有極度精確的事情!
舉個例子,給你100道小學數學題,讓你剛起床計算一次,上午計算一次,下午計算一次,睡覺前計算一次。你會發現每一次所需時間是不同的,甚至你會發現你居然還算錯了兩道題。
程式雖然執行在相對穩定(不像你情緒心智波動這麼大)的環境中,但是仍然有很多因素會影響它的每次執行。
往往程式執行在不是那麼純淨的作業系統上,也就是說不僅僅只有你這個程式在電腦上執行,還有作業系統,防毒軟體,其他程式在跑,每一次執行時作業系統所處環境是完全不一樣的,你玩遊戲還有團戰卡的時候,上網的時候還有卡死的時候,為何偏偏要求跑程式時耗時一樣呢?
現代計算機硬體和作業系統有很多種方法幫你加速,作業系統快取,硬體最佳化(比如睿頻),電池處於高效能模式還是節能模式都會影響程式執行時間。
即使你可以完全保證每一次程式執行的環境都是一模一樣的,而且有且只有一個程式在執行,那程式執行時間也不會完全相同。你的DRAM儲存器會不會恰好要重新整理?你的機械硬碟是不是恰好要尋道?你的固態硬碟是不是恰好碰到壞塊要糾錯?這些問題都可以使得執行時間千差萬別。
這個世界上很少有極度精確的事情!
舉個例子,給你100道小學數學題,讓你剛起床計算一次,上午計算一次,下午計算一次,睡覺前計算一次。你會發現每一次所需時間是不同的,甚至你會發現你居然還算錯了兩道題。
程式雖然執行在相對穩定(不像你情緒心智波動這麼大)的環境中,但是仍然有很多因素會影響它的每次執行。
其他程序搶佔程式資源往往程式執行在不是那麼純淨的作業系統上,也就是說不僅僅只有你這個程式在電腦上執行,還有作業系統,防毒軟體,其他程式在跑,每一次執行時作業系統所處環境是完全不一樣的,你玩遊戲還有團戰卡的時候,上網的時候還有卡死的時候,為何偏偏要求跑程式時耗時一樣呢?
快取、硬體最佳化、電池策略現代計算機硬體和作業系統有很多種方法幫你加速,作業系統快取,硬體最佳化(比如睿頻),電池處於高效能模式還是節能模式都會影響程式執行時間。
不定因素即使你可以完全保證每一次程式執行的環境都是一模一樣的,而且有且只有一個程式在執行,那程式執行時間也不會完全相同。你的DRAM儲存器會不會恰好要重新整理?你的機械硬碟是不是恰好要尋道?你的固態硬碟是不是恰好碰到壞塊要糾錯?這些問題都可以使得執行時間千差萬別。