国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

為什么說過早優(yōu)化是萬惡之源?

這篇具有很好參考價值的文章主要介紹了為什么說過早優(yōu)化是萬惡之源?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

??Donald Knuth(高德納)是一位計算機科學(xué)界的著名學(xué)者和計算機程序設(shè)計的先驅(qū)之一。他被譽為計算機科學(xué)的“圣經(jīng)”《計算機程序設(shè)計藝術(shù)》的作者,提出了著名的“大O符號”來描述算法的時間復(fù)雜度和空間復(fù)雜度,開發(fā)了TeX系統(tǒng)用于排版科技文獻,獲得過圖靈獎、馮·諾伊曼獎、美國國家科學(xué)獎?wù)碌榷囗棙s譽。今天要說的就是他所提出的一條軟件設(shè)計重要原則 Premature optimization is the root of all evil 過早優(yōu)化是萬惡之源
為什么說過早優(yōu)化是萬惡之源?
??為什么說“過早優(yōu)化是萬惡之源”? 我認為過早優(yōu)化代碼會讓人陷入到錯誤的目標(biāo)中去,從而忽視掉了最重要的目標(biāo)。舉個很簡單的例子,你需要快速構(gòu)建一個產(chǎn)品來搶占用戶,你當(dāng)下最重要的目標(biāo)是讓這個產(chǎn)品快速上線,而不是把這個產(chǎn)品打造的好用(在中國互聯(lián)網(wǎng)下,這樣的事數(shù)不勝數(shù)),如果你只關(guān)注到后者體驗、性能問題而忽視了速度,在當(dāng)下高度競爭的市場之下,你根本毫無機會。

??當(dāng)然上面這個例子是從感性的層面說的,對很多程序猿來說也可能涉及不到產(chǎn)品層面的內(nèi)容。我們從軟件設(shè)計的層面,理性的來說,過早優(yōu)化可能會導(dǎo)致以下的一些問題:

  1. 增加代碼的復(fù)雜性:過度優(yōu)化可能會導(dǎo)致代碼的復(fù)雜性增加,從而降低代碼的可讀性和可維護性。如果代碼過于復(fù)雜,可能會導(dǎo)致開發(fā)人員難以理解和維護代碼,從而增加開發(fā)成本和時間。

  2. 耗費開發(fā)時間和資源:過度優(yōu)化可能會導(dǎo)致開發(fā)人員花費大量時間和資源在代碼的性能優(yōu)化上,而忽略了其他重要的開發(fā)任務(wù)。這可能會導(dǎo)致項目進度延誤和開發(fā)成本增加。

  3. 降低代碼的可移植性:過度優(yōu)化可能會導(dǎo)致代碼的可移植性降低。如果代碼過于依賴于特定的硬件或操作系統(tǒng),可能會導(dǎo)致代碼無法在其他環(huán)境中運行。

  4. 降低代碼的可擴展性:過度優(yōu)化可能會降低代碼的可擴展性。如果代碼過于依賴于特定的算法或數(shù)據(jù)結(jié)構(gòu),可能會導(dǎo)致代碼無法適應(yīng)未來的需求變化。

過早優(yōu)化的典型案例

??在軟件工程史上由于過度關(guān)注軟件性能導(dǎo)致項目最終失敗的案例比比皆是,比如我下面要說的一些項目,在軟件工程史上都是非常知名的項目(當(dāng)然可能有些新生代程序員已經(jīng)不知道了)。

  1. IBM OS/360操作系統(tǒng):在20世紀(jì)60年代,IBM公司開發(fā)了OS/360操作系統(tǒng),這是當(dāng)時最大的軟件工程項目之一。在開發(fā)過程中,IBM公司過于關(guān)注代碼的性能問題,導(dǎo)致代碼的復(fù)雜性增加,開發(fā)時間延誤,最終導(dǎo)致項目的失敗。我知曉這個項目還是在我最近在閱讀的一本軟件工程經(jīng)典書籍《人月神話》中,也推薦大家閱讀下,這個項目雖然最終失敗了,但也給整個軟件工程領(lǐng)域留下了寶貴的經(jīng)驗。

  2. Netscape Navigator瀏覽器:在20世紀(jì)90年代,Netscape公司開發(fā)了Navigator瀏覽器,這是當(dāng)時最流行的瀏覽器之一。在開發(fā)過程中,Netscape公司過于關(guān)注代碼的性能問題,導(dǎo)致代碼的復(fù)雜性增加,開發(fā)時間延誤,最終導(dǎo)致瀏覽器市場份額嚴重下降。

  3. Windows Vista操作系統(tǒng):在21世紀(jì)初,微軟公司開發(fā)了Windows Vista操作系統(tǒng),這是當(dāng)時最大的軟件工程項目之一。在開發(fā)過程中,微軟公司過于關(guān)注代碼的性能問題,導(dǎo)致代碼的復(fù)雜性增加,開發(fā)時間延誤,最終導(dǎo)致操作系統(tǒng)的用戶體驗不佳,市場反響不佳。話說這個操作系統(tǒng)我還用過呢,用戶界面還是很漂亮的,很多UI設(shè)計也被沿用到了Window7中。

如何識別過早優(yōu)化

??在軟件開發(fā)過程中,如何判斷是否過早優(yōu)化呢?這里有一些概括性的判斷標(biāo)準(zhǔn),可以簡單參考下:

  1. 是否存在性能問題:如果代碼還沒有性能問題,那么過早優(yōu)化就是不必要的。因此,在進行優(yōu)化之前,應(yīng)該先測試代碼的性能,確定是否存在性能問題。

  2. 是否優(yōu)化了未來可能發(fā)生的問題:如果優(yōu)化的是未來可能發(fā)生的問題,而不是當(dāng)前存在的問題,那么就可能是過早優(yōu)化。在進行優(yōu)化之前,應(yīng)該優(yōu)先考慮當(dāng)前存在的問題,而不是未來可能發(fā)生的問題。

  3. 是否犧牲了代碼的可讀性和可維護性:如果優(yōu)化代碼會導(dǎo)致代碼的復(fù)雜性增加,降低代碼的可讀性和可維護性,那么就可能是過早優(yōu)化。在進行優(yōu)化之前,應(yīng)該優(yōu)先考慮代碼的可讀性、可維護性和可擴展性。

  4. 是否浪費了大量的開發(fā)時間和資源:如果優(yōu)化代碼會浪費大量的開發(fā)時間和資源,而不是提高代碼的性能和效率,那么就可能是過早優(yōu)化。在進行優(yōu)化之前,應(yīng)該評估優(yōu)化的成本和收益,確定是否值得進行優(yōu)化。

??判斷是否過早優(yōu)化需要根據(jù)具體情況進行評估。在進行優(yōu)化之前,應(yīng)該先測試代碼的性能,確定是否存在性能問題。同時,也應(yīng)該優(yōu)先考慮代碼的可讀性、可維護性和可擴展性,避免過度優(yōu)化。

總結(jié)

??作為一名在IT領(lǐng)域摸爬滾打多年的工程師,我深有體會地認識到過早優(yōu)化是軟件開發(fā)中的一大陷阱。在軟件開發(fā)的初期,我們可能會過于關(guān)注代碼的性能問題,而忽略了代碼的可讀性、可維護性和可擴展性。這種做法可能會導(dǎo)致代碼的復(fù)雜性增加,降低代碼的可讀性和可維護性,甚至可能會浪費大量的開發(fā)時間和資源。

??在軟件開發(fā)過程中,我們應(yīng)該避免過早優(yōu)化,而是優(yōu)先考慮代碼的可讀性、可維護性和可擴展性。當(dāng)需要進行性能優(yōu)化時,應(yīng)該在代碼的基礎(chǔ)上進行優(yōu)化,通過分析性能瓶頸、優(yōu)化算法和數(shù)據(jù)結(jié)構(gòu)等方法來提高代碼的性能和效率。同時,我們也應(yīng)該意識到,性能優(yōu)化并不是軟件開發(fā)的唯一目標(biāo),我們還應(yīng)該注重代碼的可讀性、可維護性和可擴展性,以便保證代碼的質(zhì)量和可靠性。文章來源地址http://www.zghlxwxcb.cn/news/detail-426712.html

到了這里,關(guān)于為什么說過早優(yōu)化是萬惡之源?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 為什么 Elasticsearch 中高基數(shù)字段上的聚合是一個壞主意以及如何優(yōu)化它

    為什么 Elasticsearch 中高基數(shù)字段上的聚合是一個壞主意以及如何優(yōu)化它

    Elasticsearch 是分布式搜索和分析引擎,是滿足搜索和聚合需求的最受歡迎的選擇。 Elasticsearch 提供了 2 種數(shù)據(jù)類型來存儲字符串值: Text :- 在存儲到倒排索引之前對這些內(nèi)容進行分析,并針對全文搜索進行優(yōu)化。 文本字段不允許聚合 Keyword :- 它們按原樣存儲在倒排索引中,

    2024年02月08日
    瀏覽(24)
  • postgresql 內(nèi)核源碼分析 事務(wù)提交回滾狀態(tài)記錄 clog機制流程,commit log文件格式,事務(wù)狀態(tài)為什么單獨記錄的原因,分組優(yōu)化及l(fā)eader更新機制

    ? 專欄內(nèi)容 : postgresql內(nèi)核源碼分析 手寫數(shù)據(jù)庫toadb 并發(fā)編程 ? 開源貢獻 : toadb開源庫 個人主頁 :我的主頁 管理社區(qū) :開源數(shù)據(jù)庫 座右銘:天行健,君子以自強不息;地勢坤,君子以厚德載物. PostgreSQL是一種開源的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),其內(nèi)核源碼的分析對于深入理

    2024年02月08日
    瀏覽(34)
  • Netty為什么高效,為什么這么受歡迎?

    Netty為什么高效,為什么這么受歡迎?

    上篇文章通過 Java NIO 的處理流程與 Netty 的總體流程比較,并結(jié)合 Netty 的源碼,可以更加清晰地理解Netty。本文將結(jié)合源碼詳細解析Netty的高效和強大功能的設(shè)計原理,學(xué)習(xí) Netty 是如何實現(xiàn)其卓越的性能和功能特性,也希望可以在日后工作中利用到 Netty 的設(shè)計思想。 我們先看

    2024年02月12日
    瀏覽(40)
  • Redis—Redis介紹(是什么/為什么快/為什么做MySQL緩存等)

    Redis—Redis介紹(是什么/為什么快/為什么做MySQL緩存等)

    一、Redis是什么 Redis 是一種 基于內(nèi)存的數(shù)據(jù)庫 ,對數(shù)據(jù)的讀寫操作都是在內(nèi)存中完成,因此讀寫速度非??欤S糜?緩存,消息隊列、分布式鎖等場景 。 ????????Redis 提供了多種數(shù)據(jù)類型來支持不同的業(yè)務(wù)場景,比如 String(字符串)、Hash(哈希)、 List (列表)、Set(集合)、

    2024年02月10日
    瀏覽(29)
  • AIMD 為什么收斂(tcp reno/cubic 為什么好)

    AIMD 為什么收斂(tcp reno/cubic 為什么好)

    TCP 擁塞控制目標(biāo)是緩解并解除網(wǎng)絡(luò)擁塞,讓所有流量公平共享帶寬,合在一起就是公平收斂。 AIMD(幾乎所有與擁塞控制相關(guān)的協(xié)議或算法都有 AIMD 的影子,包括 RoCE,BBRv2) 為什么收斂?我一般會給出下面的老圖: 雖然只展示了兩條流的收斂,但 n 條流收斂的展示無非就是將

    2024年02月06日
    瀏覽(32)
  • tcp 為什么要三次握手,兩次不行嗎?為什么?

    TCP使用三次握手(Three-Way Handshake)的過程是為了確保雙方建立起可靠的通信連接,并在連接的建立過程中協(xié)商必要的參數(shù)。兩次握手是不夠的,原因主要有以下幾點: 防止已失效的連接請求被接受: 假設(shè)有A和B兩臺主機,A向B發(fā)送了一個連接請求,但由于某些原因?qū)е逻B接建

    2024年02月20日
    瀏覽(36)
  • 為什么美國加息,會讓硅谷銀行破產(chǎn)?美聯(lián)儲為什么要加息?

    所有回答由 AI 生產(chǎn) 答 : 美國加息會導(dǎo)致國債利率上升,此時購買國債的銀行獲得的利息收益會比利率較低時少,因此國債的市場價格就會下降,從而導(dǎo)致銀行持有的這些國債資產(chǎn)減值。 答 : 美國加息意味著美國央行(即聯(lián)邦儲備委員會)將提高其官方基準(zhǔn)利率,這意味著

    2023年04月23日
    瀏覽(32)
  • 為什么用python做人工智能,為什么人工智能用python

    為什么用python做人工智能,為什么人工智能用python

    大家好,給大家分享一下python人工智能為什么放到最后才學(xué),很多人還不知道這一點。下面詳細解釋一下。現(xiàn)在讓我們來看看! Source code download: 本文相關(guān)源碼 一、為何人工智能(AI)首選Python? 讀完這篇文章你就知道了。我們看谷歌的TensorFlow基本上所有的代碼都是C++和Python,

    2024年02月22日
    瀏覽(22)
  • 【PDF密碼】PDF文件為什么無法修改?為什么PDF文檔不支持編輯?

    【PDF密碼】PDF文件為什么無法修改?為什么PDF文檔不支持編輯?

    pdf文件大家應(yīng)該都經(jīng)常接觸,但是不知道大家會遇到這種情況:有些PDF文件打開之后無法編輯?是什么原因呢?今天我們來分析一下都是那些原因?qū)е碌摹?首先我們可以考慮一下,PDF文件中的內(nèi)容是否是圖片,如果確認是圖片文件,那么我們想要編輯,就可以先使用PDF編輯器

    2024年01月22日
    瀏覽(31)
  • I2C中為什么線與?為什么要有上拉電阻?

    I2C中為什么線與?為什么要有上拉電阻?

    ????????首先,連接到 I2C 上的設(shè)備是開漏輸出的。以漏極開漏輸出(OD)為例,是指將輸出級電路結(jié)構(gòu)改為一個漏極開路輸出的 MOS 管。這樣做的好處在于: 防止短路。 可以實現(xiàn) “線與”邏輯 ,可以減少一個與門的使用,簡化電路。 結(jié)論: I2C支持多個主設(shè)備與多個從設(shè)

    2024年02月09日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包