當前位置: 華文問答 > 數位

程式中提升幾毫秒、節省幾 kB 的記憶體有必要嗎?

2022-01-07數位

Profiler扛旗人不在知乎了…

這種問題,從來都不是這麽缺資訊問的。

就好比你問我,一個零件便宜一分錢,值嗎?

那得看零件是啥。

一台火箭發動機省一分錢,謝謝,下次不用了,您該忙啥忙啥去吧。

一個螺絲省一分錢,大哥,慢慢搞別急,省不出一分給我省半分也行。

程式裏也是。一個總共執行一次的函式,省了幾毫秒;一個全世界可能只需要一份拷貝的數據,省了幾kb。那當然是沒必要。

但如果是比如內核裏的每秒呼叫幾萬次的函式,別說省一毫秒了,省一個時鐘周期都值得考慮一下。或者大量拷貝的數據結構,比如執行緒場景,那省一個字節也值得考慮一下。

判斷你的程式的呼叫模式的工作叫Profiling(具體含義轉譯成中文挺難說清楚的,貼個英英字典連結:Definition of PROFILE)。當然實際要考慮的也並不總是總共省多少時間之類的事情,還有比如關鍵路徑上的考量等等。但總之,

先Profile,再最佳化。