<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Go的性能不如Java?

          共 1640字,需瀏覽 4分鐘

           ·

          2022-05-13 04:54

          Go的性能不如Java?

          點(diǎn)擊上方“Go語言進(jìn)階學(xué)習(xí)”,進(jìn)行關(guān)注

          回復(fù)“Go語言”即可獲贈(zèng)Python從入門到進(jìn)階共10本電子書

          此地一為別,孤蓬萬里征。


          “ 閱讀本文大概需要4.4分鐘 ”


          引戰(zhàn)

          今天在 知乎 上看到了一個(gè)關(guān)于 GoJava 性能對(duì)比的問題,這種問題通常只有一個(gè)結(jié)局,那就是無休止的爭(zhēng)論,十年之后,如果這兩個(gè)語言還健在的話,這可能依然是熱門問題:

          拋開應(yīng)用場(chǎng)景談性能都是耍流氓

          目前我主要使用的也是Java和Go,方向是大數(shù)據(jù),首先我談一下我的看法吧:

          • 大部分語言都有它擅長(zhǎng)的領(lǐng)域,存在即合理:

            • PHP?擅長(zhǎng)構(gòu)建低成本W(wǎng)EB,也是世界上最好的語言

            • c?擅長(zhǎng)操作系統(tǒng)、嵌入式

            • Go?天生高并發(fā)屬性

            • R?的科學(xué)計(jì)算、統(tǒng)計(jì)無人能及

            • Python?在AI領(lǐng)域獨(dú)占鰲頭

            • Java?工業(yè)級(jí)應(yīng)用服務(wù)及Android (長(zhǎng)期霸占TIOBE榜第一的老流氓)

          • Benchmarks?的測(cè)試數(shù)據(jù)固然能說明一些問題,但這種測(cè)試環(huán)境和方式還是不夠接地氣呀,很少有遇到類似的Case不說,實(shí)際使用中也不會(huì)因?yàn)閹譵s的差距去換語言重構(gòu)項(xiàng)目。

          • 熱點(diǎn)代碼?,這個(gè)概念很重要,有些代碼片段一個(gè)月就命中一次,那就不需要多少極致的優(yōu)化了。

          • 28法則,把 80% 的精力花在重要的 20% 的代碼上吧,人的精力有限,而且世界上還有很多美好的事情,比如寫原創(chuàng)文章分享給大家(手動(dòng)眨眼)。

          • Talkischeap.Showme the code.?以我的經(jīng)驗(yàn)來看,目前大部分人的編程水平,還輪不到談及語言本身的性能,如果你不是,那請(qǐng)加我微信,帶我飛吧。

          優(yōu)缺點(diǎn)總結(jié)

          有個(gè)朋友回復(fù)的內(nèi)容我覺得非??陀^,也比較典型,知乎上抓過來的,侵刪。

          JAVA目前的問題并不在于性能,因?yàn)镴IT自動(dòng)優(yōu)化過的代碼已經(jīng)跟C匹敵了。

          JAVA的問題是,真正實(shí)際項(xiàng)目里,第三方依賴太多,架構(gòu)臃腫,過度設(shè)計(jì),這時(shí)候誰快就不好說了。

          我個(gè)人認(rèn)為,因?yàn)間o基本上只需要標(biāo)準(zhǔn)庫就足夠了,實(shí)際工程中的性能表現(xiàn)要好于JAVA(Go的協(xié)程本質(zhì)也是一種異步IO模型,Go語言: 萬物皆異步),除此之外,資源占用也是性能的一部分,顯然go內(nèi)存占用更小,CPU消耗相對(duì)低。

          benchmark game上go在大多數(shù)場(chǎng)景下都是跑的比Java快的,而且內(nèi)存消耗是java的1/3;

          來列一下Go的不足吧:

          1. 有點(diǎn)反程序員的語法

          2. 沒有泛型

          3. 標(biāo)準(zhǔn)庫中數(shù)據(jù)結(jié)構(gòu)遠(yuǎn)不如Java豐富

          4. 依賴管理雞肋

          5. channel如果使用不當(dāng),非常容易死鎖

          6. 編譯時(shí)不允許循環(huán)import

          7. 編碼時(shí)很多包名會(huì)跟自定義的變量名沖突

          8. Java中很多認(rèn)為理所當(dāng)然的庫,在Go中發(fā)現(xiàn)要重新造輪子

          9. go get命令會(huì)clone整個(gè)git倉庫,包括歷史commit

          10. 標(biāo)準(zhǔn)庫不提供routine池

          11. 沒有現(xiàn)成的Future機(jī)制 ,要自己通過channel實(shí)現(xiàn)

          暫時(shí)就想到這些;當(dāng)然所有這些都是可以解決的

          Java的不足:

          1. 語言表達(dá)能力比較欠缺(接地氣的說法叫“又臭又長(zhǎng)”)

          2. 內(nèi)存、CPU消耗大

          3. 堆內(nèi)存較大時(shí),垃圾回收器需要進(jìn)行深入調(diào)優(yōu)才能得到滿意的回收效果; 然而在一些對(duì)實(shí)時(shí)性要求高的場(chǎng)景下,gc可能直接就是無解, full gc一觸發(fā)就是地獄

          4. 程序需要預(yù)熱

          5. JDK體積龐大, springboot jar包體積大(在微服務(wù)架構(gòu)下問題最突出)

          6. Spring全家桶越來越重(Spring你做好IoC AOP就夠了),導(dǎo)致使用全家桶的應(yīng)用,性能較差(可參考TechEmpower Round 14中spring的位置),但也是足夠用的

          7. 因?yàn)槌墒斓目蚣?、庫太多,?dǎo)致很多人入門時(shí)被帶偏,以為編程就是調(diào)API,用框架,而對(duì)于原理知之甚少

          暫時(shí)就想到這些; 當(dāng)然,Java的優(yōu)點(diǎn)遠(yuǎn)遠(yuǎn)超過這些不足,否則就不會(huì)常年盤踞TIOBE編程語言排行榜第一名了


          -------------------?End?-------------------

          歡迎大家點(diǎn)贊,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

          想加入學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群

          萬水千山總是情,點(diǎn)個(gè)【在看】行不行

          瀏覽 136
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本高清无码手机在线毛片 | 大鸡巴日逼视频 | 伊人网站在线观看 | 98无码人妻精品一区二区三区 | 网站国产无码av在线播放 |