代碼人生丨C++程序員容易走入性能優(yōu)化誤區(qū)!對(duì)此你怎么看呢?
有些C++ 程序員,特別是只寫C++ 沒有寫過 Python/PHP 等慢語言的程序員,容易對(duì)性能有心智負(fù)擔(dān),就像著了魔一樣,每寫3 行代碼必有一行代碼因?yàn)樾阅芸紤]而優(yōu)化使得代碼變形(復(fù)雜而晦澀)。

我認(rèn)為,任何系統(tǒng)級(jí)的代碼,都不應(yīng)該刻意地在代碼層面"形式化"地在表面功夫上面考慮性能優(yōu)化,而是應(yīng)該把心思放到如何讓代碼更簡潔和清晰上面。如果邏輯清晰度能提高10%,代碼行數(shù)能減少10%,即使單個(gè)模塊性能下降20%,也應(yīng)該做這筆交易。理論上,即使單個(gè)模塊性能下降20%,整個(gè)系統(tǒng)的性能下降也許只有1%(阿姆達(dá)爾定律)。根據(jù)經(jīng)驗(yàn),如果代碼行數(shù)減少邏輯清晰度增加,帶來的往往是性能提升而不是下降。

如果一個(gè)C++ 寫的系統(tǒng)中用到了超過 3 處 std::move,就證明程序員有心智負(fù)擔(dān)了。?std::move 并不是性能優(yōu)化的手段,而是檢測系統(tǒng)是否變臭的標(biāo)記。為了不讓檢測方法失效,也就是為了避免程序員逃避檢測,?std::move 外面裹了一層糖衣,吸引那些著了魔的程序員主動(dòng)來接受檢測主動(dòng)暴露。這個(gè)符號(hào)證明程序員花了大量的精力去追求表面功夫,而不是把心思放在如何讓系統(tǒng)更簡潔和清晰上面。
lock free 也是檢測一個(gè) C++ 系統(tǒng)是否發(fā)臭的標(biāo)記,如果你能在代碼中感受到程序員在極力避免使用鎖,也就是明明可以用一行鎖解決的事,它偏偏封裝了5 個(gè)輔助類,引入了3 個(gè)概念,那么,顯然你也聞到了發(fā)臭的味道。

為什么要強(qiáng)調(diào)C++ 呢? 因?yàn)橐粋€(gè) C++ 程序員誕生的時(shí)候,他有極高的機(jī)率沾染上"過度優(yōu)化"的毛病,這個(gè)毛病一直伴隨許多C++ 程序員的職業(yè)生命周期。這是一個(gè)慢性病,影響程序員的個(gè)人職業(yè)發(fā)展,毀壞程序員參與開發(fā)的系統(tǒng)。
自學(xué)C/C++編程難度很大,不妨和一些志同道合的小伙伴一起學(xué)習(xí)成長!

學(xué)習(xí)C/C++編程知識(shí),提升C/C++編程能力,歡迎關(guān)注UP一起來成長!
另外,UP在主頁上傳了一些學(xué)習(xí)C/C++編程的視頻教程,有興趣或者正在學(xué)習(xí)的小伙伴一定要去看一看哦!會(huì)對(duì)你有幫助的~