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