有些C++ 程序員,特別是只寫C++ 沒有寫過 Python/PHP 等慢語言的程序員,容易對性能有心智負擔,就像着了魔同樣,每寫3 行代碼必有一行代碼由於性能考慮而優化使得代碼變形(複雜而晦澀)。程序員
我認爲,任何系統級的代碼,都不該該刻意地在代碼層面"形式化"地在表面功夫上面考慮性能優化,而是應該把心思放到如何讓代碼更簡潔和清晰上面。若是邏輯清晰度能提升10%,代碼行數能減小10%,即便單個模塊性能降低20%,也應該作這筆交易。理論上,即便單個模塊性能降低20%,整個系統的性能降低也許只有1%(阿姆達爾定律)。根據經驗,若是代碼行數減小邏輯清晰度增長,帶來的每每是性能提高而不是降低。編程
若是一個C++ 寫的系統中用到了超過 3 處 std::move,就證實程序員有心智負擔了。 std::move 並非性能優化的手段,而是檢測系統是否變臭的標記。爲了避免讓檢測方法失效,也就是爲了不程序員逃避檢測, std::move 外面裹了一層糖衣,吸引那些着了魔的程序員主動來接受檢測主動暴露。這個符號證實程序員花了大量的精力去追求表面功夫,而不是把心思放在如何讓系統更簡潔和清晰上面。性能優化
lock free 也是檢測一個 C++ 系統是否發臭的標記,若是你能在代碼中感覺到程序員在極力避免使用鎖,也就是明明能夠用一行鎖解決的事,它恰恰封裝了5 個輔助類,引入了3 個概念,那麼,顯然你也聞到了發臭的味道。微信
爲何要強調C++ 呢? 由於一個 C++ 程序員誕生的時候,他有極高的機率沾染上"過分優化"的毛病,這個毛病一直伴隨許多C++ 程序員的職業生命週期。這是一個慢性病,影響程序員的我的職業發展,毀壞程序員參與開發的系統。性能
自學C/C++編程難度很大,不妨和一些志同道合的小夥伴一塊兒學習成長!學習
C語言C++編程學習交流圈子,【點擊進入】微信公衆號:C語言編程學習基地優化
有一些源碼和資料分享,歡迎轉行也學習編程的夥伴,和你們一塊兒交流成長會比本身琢磨更快哦!spa