Heim  >  Artikel  >  Backend-Entwicklung  >  Die Leistung von Go ist nicht so gut wie die von Java?

Die Leistung von Go ist nicht so gut wie die von Java?

Go语言进阶学习
Go语言进阶学习nach vorne
2023-07-24 14:45:281275Durchsuche

Heute habe ich eine wissenschaftliche Berechnung und Statistik über <span style="box-sizing: border-box;background-image: initial;background-position: initial;background-size: initial;background-repeat: initial;background-attachment: initial;background-origin: initial;background-clip: initial;display: inline-block;padding-right: 2px;padding-left: 2px;font-size: 14px;">Go</span><span style="box-sizing: border-box;background-image: initial;background-position: initial;background-size: initial;background-repeat: initial;background-attachment: initial;background-origin: initial;background-clip: initial;display: inline-block;padding-right: 2px;padding-left: 2px;font-size: 14px;">Java</span> 性能对比的问题,这种问题通常只有一个结局,那就是无休止的争论,十年之后,如果这两个语言还健在的话,这可能依然是热门问题:

Die Leistung von Go ist nicht so gut wie die von Java?

抛开应用场景谈性能都是耍流氓

目前我主要使用的也是Java和Go,方向是大数据,首先我谈一下我的看法吧:

  • 大部分语言都有它擅长的领域,存在即合理:

    • <span style="box-sizing: border-box;background-image: initial;background-position: initial;background-size: initial;background-repeat: initial;background-attachment: initial;background-origin: initial;background-clip: initial;display: inline-block;padding-right: 2px;padding-left: 2px;line-height: 22px;font-size: 15px;">PHP</span> 擅长构建低成本WEB,也是世界上最好的语言

    • <span style="box-sizing: border-box;background-image: initial;background-position: initial;background-size: initial;background-repeat: initial;background-attachment: initial;background-origin: initial;background-clip: initial;display: inline-block;padding-right: 2px;padding-left: 2px;line-height: 22px;font-size: 15px;">c</span> 擅长操作系统、嵌入式

    • <span style="box-sizing: border-box;background-image: initial;background-position: initial;background-size: initial;background-repeat: initial;background-attachment: initial;background-origin: initial;background-clip: initial;display: inline-block;padding-right: 2px;padding-left: 2px;line-height: 22px;font-size: 15px;">Go</span> 天生高并发属性

    • <span style="box-sizing: border-box;background-image: initial;background-position: initial;background-size: initial;background-repeat: initial;background-attachment: initial;background-origin: initial;background-clip: initial;display: inline-block;padding-right: 2px;padding-left: 2px;line-height: 22px;font-size: 15px;">R</span> auf Zhihu gesehen, mit der niemand mithalten kann

    • <span style="box-sizing: border-box;background-image: initial;background-position: initial;background-size: initial;background-repeat: initial;background-attachment: initial;background-origin: initial ;background-clip: initial;display: inline-block;padding-right: 2px;padding-left: 2px;line-height: 22px;font-size: 15px;">Python<code style="box-sizing: border-box;background: rgb(243, 241, 241);color: rgb(88, 88, 88);font-size: 16px;line-height: 18px;"><span style="box-sizing: border-box;background-image: initial;background-position: initial;background-size: initial;background-repeat: initial;background-attachment: initial;background-origin: initial;background-clip: initial;display: inline-block;padding-right: 2px;padding-left: 2px;line-height: 22px;font-size: 15px;">Python</span> 在AI领域独占鳌头

    • <span style="box-sizing: border-box;background-image: initial;background-position: initial;background-size: initial;background-repeat: initial;background-attachment: initial;background-origin: initial;background-clip: initial;display: inline-block;padding-right: 2px;padding-left: 2px;line-height: 22px;font-size: 15px;">Java</span> 工业级应用服务及Android (长期霸占TIOBE榜第一的老流氓)

  • <span style="color: rgb(74, 74, 74);box-sizing: border-box;background-image: initial;background-position: initial;background-size: initial;background-repeat: initial;background-attachment: initial;background-origin: initial;background-clip: initial;display: inline-block;padding-right: 2px;padding-left: 2px;line-height: 22px;">Benchmarks</span> 的测试数据固然能说明一些问题,但这种测试环境和方式还是不够接地气呀,很少有遇到类似的Case不说,实际使用中也不会因为几ms的差距去换语言重构项目。

  • <span style="color: rgb(74, 74, 74);font-size: 16px;box-sizing: border-box;background-image: initial;background-position: initial;background-size: initial;background-repeat: initial;background-attachment: initial;background-origin: initial;background-clip: initial;display: inline-block;padding-right: 2px;padding-left: 2px;line-height: 22px;">热点代码</span> ,这个概念很重要,有些代码片段一个月就命中一次,那就不需要多少极致的优化了。

  • <span style="color: rgb(74, 74, 74);font-size: 16px;box-sizing: border-box;background-image: initial;background-position: initial;background-size: initial;background-repeat: initial;background-attachment: initial;background-origin: initial;background-clip: initial;display: inline-block;padding-right: 2px;padding-left: 2px;line-height: 22px;">28</span>法则,把 80% 的精力花在重要的 20% 的代码上吧,人的精力有限,而且世界上还有很多美好的事情,比如写原创文章分享给大家(手动眨眼)。

  • <span style="color: rgb(74, 74, 74);font-size: 16px;box-sizing: border-box;background-image: initial;background-position: initial;background-size: initial;background-repeat: initial;background-attachment: initial;background-origin: initial;background-clip: initial;display: inline-block;padding-right: 2px;padding-left: 2px;line-height: 22px;">Talkischeap.Showme the code.</span>Java 工业级应用服务及Android (长期霸占TIOBE榜第一的老流氓)

<span style="Farbe: RGB(74, 74, 74);Box- Größe: Rahmenfeld;Hintergrundbild: anfänglich;Hintergrundposition: anfänglich;Hintergrundgröße: anfänglich;Hintergrundwiederholung: anfänglich;Hintergrundanhang: anfänglich;Hintergrundursprung: anfänglich;Hintergrundclip: anfänglich;Anzeige: inline-block;padding-right: 2px;padding-left: 2px;line-height: 22px;">Benchmarks</span>

是不够接地气呀,很少有遇到类似的Case不说,实际使用中也不会因为几ms的差距去换语言重构项目.🎜🎜🎜 🎜🎜<span style="color: rgb(74, 74, 74);font-size: 16px;box-sizing: border -box;Hintergrundbild: Initial;Hintergrundposition: Initial;Hintergrundgröße: Initial;Hintergrundwiederholung: Initial;Hintergrundanhang: Initial;Hintergrundursprung: Initial;Hintergrundclip: Initial;Anzeige: Inline-Block ;padding-right: 2px;padding-left: 2px;line-height: 22px;">热点代码🎜</span> 就不需要多少极致的优化了。🎜🎜🎜🎜🎜<span style=" Farbe: rgb(74, 74, 74);Schriftgröße: 16px;Boxgröße: Rahmenbox;Hintergrundbild: Initiale;Hintergrundposition: Initiale;Hintergrundgröße: Initiale;Hintergrundwiederholung: Initiale;Hintergrund -attachment: initial;background-origin: initial;background-clip: initial;display: inline-block;padding-right: 2px;padding-left: 2px;line-height: 22px;">28🎜</span>法则80 % 的精力花在重要的 20 %如写原创文章分享给大家(手动眨眼)。🎜🎜🎜🎜🎜<span style="Farbe: RGB(74, 74, 74 );font-size: 16px;box-sizing: border-box;background-image: initial;background-position: initial;background-size: initial;background-repeat: initial;background-attachment: initial;background-origin: initial;background-clip: initial;display: inline-block;padding-right: 2px;padding-left: 2px;line-height: 22px;">Talkischeap.Showme the code.🎜</span> 以我的经验来看, 目前大部分人的编程水平, 还轮不到谈及语言本身的性能, 如果你不是, 那请加我微信, 带我飞吧。🎜🎜🎜🎜🎜优缺点总结🎜🎜有个朋友回复的内容我觉得非常客观,也比较典型,知乎上抓过来的,侵删.🎜

Das aktuelle Problem bei JAVA ist nicht die Leistung, da der von JIT automatisch optimierte Code bereits mit C vergleichbar ist.

Das Problem bei JAVA besteht darin, dass es in tatsächlichen Projekten zu viele Abhängigkeiten von Drittanbietern, eine aufgeblähte Architektur und ein übermäßiges Design gibt. Derzeit ist es schwer zu sagen, wer gewinnen wird.

Ich persönlich denke, dass die Leistung in tatsächlichen Projekten besser ist als in JAVA, da Go grundsätzlich nur die Standardbibliothek benötigt (Gos Coroutine ist im Wesentlichen ein asynchrones E / A-Modell, Go-Sprache: Alles ist asynchron), außerdem ist die Ressourcennutzung höher Auch ein Teil der Leistung hat offensichtlich eine geringere Speicherauslastung und einen relativ geringen CPU-Verbrauch.

Go auf dem Benchmark-Spiel läuft in den meisten Szenarien schneller als Java und der Speicherverbrauch beträgt 1/3 von Java;

Lassen Sie uns die Mängel von Go auflisten:

  1. Ein bisschen Anti-Programmierer Syntax: Keine Generika. Die Datenstrukturen in der Standardbibliothek sind weitaus weniger umfangreich als in Java. Kanal bei unsachgemäßer Verwendung ist sehr leicht zu blockieren.

  2. Zyklischer Import ist während der Kompilierung nicht zulässig Zugegeben, ich habe festgestellt, dass ich das Rad in Go neu erfinden muss
  3. Es gibt keinen vorgefertigten Zukunftsmechanismus, man muss ihn selbst über Kanäle implementieren

  4. Das sind die Dinge, die mir vorerst in den Sinn kommen, natürlich können alle diese gelöst werden

    Mängel von Java:
  5. Mangelnde sprachliche Ausdrucksfähigkeit (das bodenständige Sprichwort heißt „wieder“ Stinkend und lang“)

  6. Hoher Speicher- und CPU-Verbrauch

  7. Wenn der Heap-Speicher groß ist, muss der Garbage Collector gründlich optimiert werden, um zufriedenstellende Recyclingergebnisse zu erzielen. In einigen Fällen, in denen Echtzeitleistung erforderlich ist, ist GC möglicherweise nicht mehr lösbar sei die Hölle

  8. Das Programm muss aufgewärmt werden

  9. JDK ist riesig und das Springboot-Jar-Paket ist riesig (das Problem tritt am deutlichsten unter der Microservice-Architektur auf)

  10. Spring-Familien-Buckets werden immer schwerer (Frühling, Sie müssen nur IoC AOP gut machen ), was dazu führt, dass die Anwendung von Family Bucket eine schlechte Leistung aufweist (siehe die Position von Spring in TechEmpower-Runde 14), aber es reicht aus, sie zu verwenden

  11. Da es zu viele ausgereifte Frameworks und Bibliotheken gibt , viele Leute werden zu Beginn in die Irre geführt und denken, dass Programmieren bedeutet, APIs anzupassen und Frameworks zu verwenden, aber sie wissen nur sehr wenig über die Prinzipien

Das sind natürlich die Dinge, die mir im Moment einfallen, die Vorteile von Java überwiegt diese Mängel bei weitem, sonst würde es nicht das ganze Jahr über den ersten Platz im TIOBE-Programmiersprachenranking belegen

Das obige ist der detaillierte Inhalt vonDie Leistung von Go ist nicht so gut wie die von Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:Go语言进阶学习. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen