為什么優(yōu)秀的工程師,都要關(guān)心代碼性能?
網(wǎng)站優(yōu)化
發(fā)布者:cya
2019-12-06 08:43
訪問量:230
過去三十年,互聯(lián)網(wǎng)江湖風(fēng)云變幻。但無論技術(shù)如何迭代,互聯(lián)網(wǎng)界都有一個(gè)亙古不變的追求——性能和效率。一些程序員,尤其是剛工作不久的程序員可能會覺得,自己寫出來的代碼只要沒有 bug,就已經(jīng)很好了,哪里還有精力去追求性能和效率?只有運(yùn)維、測試、或者高級技術(shù)人員,才有學(xué)習(xí)性能優(yōu)化的必要。但其實(shí),性能優(yōu)化和容量效率對公司而言越來越重要,并且已經(jīng)是每個(gè)程序員的必備加分項(xiàng)。其中有三個(gè)原因:首先,性能與容量效率影響著公司產(chǎn)品的生死。今天的互聯(lián)網(wǎng)服務(wù)(尤其對大廠而言)有兩個(gè)顯著特點(diǎn):大規(guī)模(大數(shù)據(jù)、用戶多等)和高要求(低延遲、高吞吐等),這就必然要求服務(wù)的高性能和容量的高效率。不夸張地說,當(dāng)今互聯(lián)網(wǎng),得性能者得天下。你寫的代碼的性能,將直接影響產(chǎn)品的用戶量和公司的運(yùn)營成本。第二,性能和容量效率是每個(gè)技術(shù)和管理人員的進(jìn)階必備技能。想要進(jìn)階更高職位,每個(gè)互聯(lián)網(wǎng)從業(yè)人員都需要具備這些知識。掌握了這些知識,開發(fā)工程師在開發(fā)軟件時(shí)才能寫出更高性能的代碼;運(yùn)維工程師才能懂得如何監(jiān)測和提高系統(tǒng)的性能;測試工程師才可以通覽軟件測試的分類和方法;技術(shù) leader 就能了解如何進(jìn)行容量管理,提升服務(wù)效率并降低運(yùn)營成本,等等。第三,性能優(yōu)化和容量效率會幫助延長“職業(yè)生命”,可以“越老越吃香”。在硅谷的很多公司,負(fù)責(zé)性能優(yōu)化和容量管理的工程師都由一些年齡較大,工作經(jīng)驗(yàn)豐富的員工擔(dān)任。因?yàn)樗麄冏銐蛴薪?jīng)驗(yàn),能夠幫助公司提升業(yè)務(wù)性能和容量效率,節(jié)省運(yùn)營成本。隨著業(yè)務(wù)規(guī)模的擴(kuò)展,公司也越來越離不開他們。國內(nèi)也有同樣的趨勢。但是,做好性能優(yōu)化和容量效率工作并不容易。首先,雖然各種“性能測試”和“性能調(diào)優(yōu)”相關(guān)的知識有很多,比如JVM調(diào)優(yōu)、操作系統(tǒng)調(diào)優(yōu)等,但是系統(tǒng)地介紹“性能工程”的資料卻很少。其次,性能和容量效率的工作還需要各種軟技能,這種學(xué)習(xí)和積累需要相當(dāng)長的時(shí)間,如果沒有前人引路,只靠自己慢慢摸索,不太可能高效進(jìn)階。性能問題通常是復(fù)雜的,性能工程師可以類比成“醫(yī)生”,二者解決問題的思路是一樣的。下面這張圖可以對比這兩種場景。可以看到,現(xiàn)實(shí)中解決問題的思路通常是:問題→測試→分析→優(yōu)化→實(shí)踐。