過早的優化是萬惡之源 這種說法對不對,為什麼?

時間 2021-05-11 22:13:50

1樓:海星

對,問題中就已經有答案了呀,既然是「過早」,那當然說明有問題了啊。

這個問題就好比是在問,超過法律界限的有害行為是不是違法行為一樣。

搞清楚這個問題之前,先要能判斷出什麼是過早的優化,什麼是正常的優化。然後呢,萬惡之源又是什麼東西?萬惡之源了又能怎麼樣呢,資本還是萬惡之源呢。

通俗一些來說,這句話無非就是告訴你,眼前的事都沒做好呢,別想那麼遠。

而實際上,盡早規劃是對的,如果你能夠正確的預見問題,提前做了優化,那你的價值非常大,這個優化哪怕提前十年,也不會稱之為過早優化。而有些人呢,自己其實沒有足夠的分析能力與經驗,所以想的都是些杞人憂天的東西,哪怕你只是提前1分鐘口胡了優化方案,那你也是過早優化。

想多遠,要取決於你能看多遠,片面的理解這句話只會造成更多人抱有一種懶惰的態度,覺得船到橋頭自然直,但大部分人到最後都翻船了,死人是不會說話的。

這就是你不做優化的理由嗎?其實兩種極端都不可取。有的人都病入膏肓了,還在那說是藥三分毒,真是呵呵了。

2樓:Angry Bugs

首先,過早優化可能根本就沒再點子上,瞎改一通。

其次,即使做的都是有益的優化,也可能因為想的太多導致無法(按時)交付。乙個差一點的實現可能只能打 61 分,乙個沒做出來的東西只能打 0 分啊。

3樓:

做事情要有根據。過早的優化說的是沒有根據的優化,沒有測試沒有使用者量的上限就做的優化就是亂來,浪費錢。架構和優化是兩碼事,架構一定滿足某段時間的需求的,要考慮變化,又不是什麼不確定。

優化更多的是指在當前架構下對沒有達到目的指標進行優化。

4樓:據說他姓feng

1個程式跑1分鐘,要不要優化?剛畢業的學生會說:太慢了,要優化。

但如果加上乙個條件,這個程式只佔據整個流程的1%,其餘流程要跑3天,你還會不會優化它?

沒有確切的證據證明這是瓶頸,先寫對,別亂優化。

5樓:Terrance

這的確取決於演算法例如剪枝,很多時候你無法保證重剪枝的正確性。對於一些效能提高為對數級別的演算法很多情況下都要放棄一部分狀態的記錄,但卻沒辦法保證其餘模組對這些狀態的依賴性

6樓:[已重置]

1.問題很簡單,不是過早優化就是過遲優化,那麼過遲優化合理嗎?顯然不合理。優化要有個度,這個度的範圍就是現有產品結構之內。

2.萬惡的根源是沒理清楚產品邏輯,而就去coding!!!

7樓:白紙無字Zonciu

優化——就是藥,治的是效能瓶頸,或者是為了方便擴充套件。剛開始的時候各方面都不明確,此時優化就像是沒病先吃點藥預防一下——沒病都可能吃出病。

8樓:elgoog

這句話只有在理解什麼是「過早」以後才能判斷對錯, 而對「過早」的理解又需要時間和經驗。工程當中很多經驗之談在新人眼裡就像空中樓閣,虛無縹緲高大上,當你積累了一定的經驗,經歷過了一定的專案,踩過了一些坑之後再回頭看,這些經驗之談大多是常識。

記得當初公司設計資料處理的pipeline,為了防止丟失資料,同時設計了另一套恢復資料用的pipeline,功能上來講它可以監視資料處理pipeline,並且在丟失資料的情況下自動匯入丟失資料並通知處理pipeline重新處理。整套系統投入使用至今幾乎沒有丟失過資料,然而資料恢復pipeline在架構上比較複雜,牽扯到的模組比較多,維護起來不夠方便,前一陣子我們又把它給精簡成只關心丟失資料報警,而恢復資料和重新處理邏輯相對簡單,可以由碼農手動干預完成。

這種例子簡直屢見不鮮,就好像你連個可用的功能都沒開發出來就開始考慮c100k,不是說不應該提前考慮可能出現的效能瓶頸,而是說當你真正需要那個級別的吞吐量的時候,單單優化現有系統可能已經遠遠滿足不了需求了。

有句話叫「書讀的太少,想的太多」,我想是很多人容易掉進去的坑。

9樓:eddyzhou

在做設計和實現的時候,總是應該先考慮正確性(把事情做對,邊界情況處理完備),可擴充套件性(需求總是會變的),簡潔性(API正交緊湊,方便維護),最後才是效能(先定位瓶頸,具體問題具體優化)。

10樓:William

意思就是說不要「胡思亂想」。

比如你的資料庫裡一共就1萬條資料,或者系統一共只有10個使用者。這時候就不需要花費大量時間在效能優化上面。

11樓:靈劍

萬惡之源其實是胡亂設計,打亂模組邊界,破壞開閉原則,優化只是個表象,所謂的優化往往都是:

濫用輸入資料的特性,比如現在只要處理兩個漢字,就不考慮以後需要處理更長字串的問題;

濫用現有流程,明明應該是後面過程一部分的功能,為了所謂效率強行合到前一級的過程裡,或者假設前級只會以某種特定方式呼叫后級。

這些「優化」從一開始就絕對應該避免的,有的人不明白這個道理,以為是自己好心優化辦了壞事,是只看到表象沒有看到實質,實際上的問題是設計不合理或者沒有嚴格遵循設計。

12樓:Irons Du

那當然是順手能優化(按照最佳做法)的話是最好了(沒必要一定等到功能做完,否則到時覺得到處都需要優化,就頭大容易放棄)。

(當然這需要經驗,否則思考幾天所謂的優化當然會因為需求變動覺得是萬惡之源了)

13樓:Skiiii

先實現功能

再profile找瓶頸

優化瓶頸

根據二八理論,百分之八十的時間話費在百分之二十的地方。

你優化幾個for迴圈的位置方便CPU快取命中,就算提高了1000倍效率,很有可能只是把0.1秒的東西優化成了0.0001秒

而瓶頸部分哪怕只是減少了一倍的時間,也會得到很大的改善。

當然如果一看就是瓶頸的部分過早優化也沒什麼不行的,不過那就叫架構設計了。

14樓:

同意 @劉縉 在這問題中的回答

怎麼理解「premature optimization is the root of all evil」?

15樓:San Cheung

對,非常對。

血淚教訓啊。

需求會變。

很多時候可能你都不知道需求是什麼,原型已經開始架構了。

使用者可能也不知道他們的真實需求,很多時候當他們看到原型時,才逐步明確需求。

於是不斷迭代的過程中,過早的優化會讓整體架構缺乏擴充套件性。

遊戲為啥在家長眼裡是萬惡之源?

KK默默 這個你換個位置想一下就明白了,當你自己做不好一件事情的時候,正好有個藉口可以幫你轉移注意力時,你是會繼續讓人看見自己的不足,還是轉移視線,讓別人去批評另一件事情呢?很多時候,家長並沒有意識到遊戲對於孩子學習的耽誤是父母縱容孩子出現的,但他們並不認為是這樣,孩子小時候並沒有明辨是非的能力,是...

同性戀是hiv的萬惡之源嗎?

有多少人有過男同性戀以無償獻血方式檢測HIV的行為?王校豐的回答 給你貼個豬隊友豬隊友是萬惡之首只是貴圈豬隊友成災 山若烏黑 手機沒法給你文獻 HIV在中國的傳播自2006後就以性傳播為主。截止2014年中國HIV人群中性傳播比例達到95 左右,其中異性傳播所佔比較約為65 男男同性性行為 MSM ...

怎麼樣才能除去萬惡的脂肪?

王驢兒 個人覺得,跑步是用來塑型的,keep上的強力燃脂的課程很好,hiit tabata都很燃,當然前提是缺少器械的情況下白天吃飯正常吃晚飯少吃少吃少吃,堅持下去會有效果的 soda娜 在確定跑步姿勢正確的前提下,跑完步要拉伸小腿,起碼十分鐘,泡沫軸也可以,順帶可以塑形哎,很萬能。並且脂肪不萬惡嘛...