官术网_书友最值得收藏!

第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ì)代碼性能有所影響。

主站蜘蛛池模板: 子洲县| 通州市| 浠水县| 阳春市| 福鼎市| 宽城| 汝南县| 恭城| 凤台县| 桃源县| 沾益县| 石河子市| 南阳市| 剑河县| 武乡县| 汾阳市| 大连市| 靖江市| 通许县| 九龙县| 陆良县| 新龙县| 邹城市| 通城县| 德州市| 当涂县| 荃湾区| 揭阳市| 绥化市| 射阳县| 株洲市| 旌德县| 密云县| 福海县| 德安县| 三河市| 乐业县| 文成县| 长宁县| 兖州市| 余庆县|