- Go語(yǔ)言精進(jìn)之路:從新手到高手的編程思想、方法和技巧(2)
- 白明
- 570字
- 2022-01-04 17:42:25
第46條
為被測(cè)對(duì)象建立性能基準(zhǔn)
著名計(jì)算機(jī)科學(xué)家、《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)》的作者高德納曾說(shuō)過(guò):“過(guò)早優(yōu)化是萬(wàn)惡之源?!?/span>這一名言長(zhǎng)久以來(lái)被很多開(kāi)發(fā)者奉為圭臬。而關(guān)于這句名言的解讀也像“編程語(yǔ)言戰(zhàn)爭(zhēng)”一樣成為程序員界的常設(shè)話題。
筆者認(rèn)為之所以對(duì)這句話的解讀出現(xiàn)“見(jiàn)仁見(jiàn)智”的情況,是因?yàn)檫@句話本身缺少上下文:
- 被優(yōu)化的對(duì)象是什么類型的程序?
- 優(yōu)化什么?設(shè)計(jì)、性能、資源占用還是……?
- 優(yōu)化的指標(biāo)是什么?
不同開(kāi)發(fā)者看問(wèn)題的視角不同,所處的上下文不同,得出的解讀自然也不會(huì)相同。Android界開(kāi)源大牛Jake Wharton就曾提出過(guò)這樣一個(gè)觀點(diǎn):“過(guò)早的引用‘過(guò)早優(yōu)化是萬(wàn)惡之源’是一切龜速軟件之源。”
是否優(yōu)化、何時(shí)優(yōu)化實(shí)質(zhì)上是一個(gè)決策問(wèn)題,但決策不能靠直覺(jué),要靠數(shù)據(jù)說(shuō)話。借用上面名言中的句型:沒(méi)有數(shù)據(jù)支撐的過(guò)早決策是萬(wàn)惡之源。
Go語(yǔ)言最初被其設(shè)計(jì)者們定位為“系統(tǒng)級(jí)編程語(yǔ)言”,這說(shuō)明高性能一直是Go核心團(tuán)隊(duì)的目標(biāo)之一。很多來(lái)自動(dòng)態(tài)類型語(yǔ)言的開(kāi)發(fā)者轉(zhuǎn)到Go語(yǔ)言顯然也是為了性能(相對(duì)于動(dòng)態(tài)類型語(yǔ)言),Gopher期望Go核心團(tuán)隊(duì)對(duì)Go GC的持續(xù)優(yōu)化也都是出于對(duì)性能關(guān)注的表現(xiàn)。性能優(yōu)化也是優(yōu)化的一種,作為一名Go開(kāi)發(fā)者,我們?cè)撊绾巫龀鍪欠駥?duì)代碼進(jìn)行性能優(yōu)化的決策呢?可以通過(guò)為被測(cè)對(duì)象建立性能基準(zhǔn)的方式去獲得決策是否優(yōu)化的支撐數(shù)據(jù),同時(shí)可以根據(jù)這些性能基準(zhǔn)數(shù)據(jù)判斷出對(duì)代碼所做的任何更改是否對(duì)代碼性能有所影響。
- 流量的秘密:Google Analytics網(wǎng)站分析與優(yōu)化技巧(第2版)
- 從零開(kāi)始:數(shù)字圖像處理的編程基礎(chǔ)與應(yīng)用
- SQL基礎(chǔ)教程(視頻教學(xué)版)
- Elasticsearch for Hadoop
- Python算法從菜鳥(niǎo)到達(dá)人
- Building RESTful Python Web Services
- Go語(yǔ)言底層原理剖析
- 移動(dòng)增值應(yīng)用開(kāi)發(fā)技術(shù)導(dǎo)論
- Python一行流:像專家一樣寫代碼
- 深度學(xué)習(xí)入門:基于Python的理論與實(shí)現(xiàn)
- Visual Basic 程序設(shè)計(jì)實(shí)踐教程
- Python Machine Learning Cookbook
- Elasticsearch搜索引擎構(gòu)建入門與實(shí)戰(zhàn)
- Java面試一戰(zhàn)到底(基礎(chǔ)卷)
- HTML5 Game Development by Example:Beginner's Guide(Second Edition)