Test bei Google: C++ bietet die beste Performance

Der Suchmaschinen-Konzern Google hat der Programmiersprache C++ bescheinigt, wohl weiterhin die beste Performance unter einer Reihe von Konkurrenten aufzuweisen. Der Test erstreckte sich allerdings über eine recht eingeschränkte Auswahl von ... mehr... Quellcode, Code, Programmierung, Programmiersprache Quellcode, Code, Programmierung, Programmiersprache Quellcode, Code, Programmierung, Programmiersprache

Diese Nachricht vollständig anzeigen.

Jetzt einen Kommentar schreiben
 
Die Auswahl der Sprachen ist aber ja leider doch sehr eingeschränkt. Ich hätte mir da zumindest eine der .NET-Sprachen wie C# oder VB gewünscht, weil diese ja sehr häufig für schnell "Ich mach mal eben"-Lösungen benutzt werden. Halt einfach mal zum Vergleich. Und auch wenn Assembler keine Hochsprache ist hätte ich mir da auch eine Referenz gewünscht, nur so zum vergleichen. Aber so, C++ und Java ok, aber Scala und Go sind da doch eher Außenseiter.
 
@Tomarr: Google verwendet intern kaum mehr Windows, auf den Servern sowieso nicht. Daher ist .NET von vornherein ausgeschlossen. PS: VisualBasic? Machst du Witze? ^^ C# ist zu 90% ident mit Java, nur ein wenig mit Delphi Features gewürzt.
 
@Wollknäuel Sockenbar: und VB.NET bietet aktuell noch (bis C#5 /.NET 4.5) einfacherer Implementierungen wie Tuple und Co. Am Ende kommt sowieso bei beiden Sprachen IL-Code heraus - daher ist C# und VB.NET quasi identisch.
 
@Wollknäuel Sockenbar: Es geht hier ja um die Performance. Und da ist es in .Net absolut egal ob du in C# oder in VB programmierst, da es in .NET absolut irrelevant ist von welcher Sprache aus interpretiert wird. Mich hätte halt nur der Vergleich mal interessiert. Das in den wenigsten Fällen noch Assembler benutzt wird ist mir ja auch klar, aber der Vergleich ist halt schon interessant. Und im Bericht steht ja nicht das Google nur das was sie selber benutzen getestet hat.
 
@Tomarr: Nicht ganz richtig. Interpretierter C# Code unterscheidet sich, auch wenn nur minimal, von interpretierten VB.NET Code.
 
@Tomarr: C++ gewinnt haushoch gegen C#: http://goo.gl/SzhNS
 
@Feuerpferd: Das ist die Mono-Runtime. Ich würde gerne mal Resultate mit der original .NET-Runtime von MS sehen.
 
@Wollknäuel Sockenbar: Es gibt auch von VB eine .net Adaption - ich denke das meinte Tomarr ;) Aber es steht, zumindest hier, ja auch nichts davon, dass es um die hausinterne Nutzung von Google geht - sondern eher generell wohl um die Performance, oder?
 
@kazesama: Weswegen wird Google sich wohl die Arbeit machen das zu testen? Nicht zufällig weil sie es intern nutzen und damit die beste Wahl treffen wollen? ;)
 
@Fallen][Angel: Wenn dem so währe hätten sie aber wohl GO den Vorrang gegeben und den Compiler ihren Bedürfnissen nach optimiert.
 
@Tomarr: Die .NET-Werte hätten mich auch interessiert. Schon zu Zeiten des .NET Frameworks 1.1 war ein .NET-Programm dicht an der Performance von C++ dran. Würd mich wundern wenn die Performance bis Version 4.0 abgenommen hätte. PS: In den Testbedingungen steht, dass der Code absichtlich nur die "Basics" von Programmiersprachen nutzt und auch keine Optimierungen bezüglich Compiler, Runtime oder Zielsystem enthält. Das sollte der Vergleichbarkeit dienen.
 
@Wollknäuel Sockenbar: .NET ist von vornherein ausgeschlossen? Wieso? Schon mal was von Mono gehört?
 
@DennisMoore: Mono? Du meinst dieses Framework bei dem man auf das mündliche Versprechen seitens MS vertrauen muss, nicht in Grund und Boden verklagt zu werden? ...
 
@Wollknäuel Sockenbar: Verklagen? Weshalb? Mono und .NET implementieren die standardisierte Fassung der Common Language Specification. Die gehört Microsoft überhaupt nicht. Alles was Microsoft hinzugefügt hat und Mono übernehmen möchte kann per Agreement oder der von dir genannten "Promise" übernommen werden. Vielleicht informierst du dich doch besser nochmal über .NET, CLR und CLS.
 
@Wollknäuel Sockenbar: Boar Junge. Du hast sowas von keine Ahnung. Halt dich doch einfach aus der Diskussion heraus. Erstens gibt es bei Google genügend Windows-Rechner, auf denen man hätte testen können, zweitens - wie schon mehrfach erwähnt - ist VB.NET immer noch topaktuell, wenngleich ich die Syntax von C# tausend mal besser finde, drittens ist C# weitaus mehr als Java und mit Delphi hat C# überhaupt nichts gemein, viertens ist .NET OpenSource!, sodass man fünftens keine Bedenken haben brauch Mono zu verwenden, denn sechstens arbeitet MS offiziell mit Novell an Mono und siebtens ist Mono auch schon sehr weit gediegen und hängt dem .NET Framework und Silverlight nur noch geringfühgig bis maximal zu einer Version hinterher.
 
@sushilange: Ich kenne genug Googler die mit Windows arbeiten. Bei den Entwicklern zumindest ist es relativ ausgeglichen aber eigentlich nutzt jeder was ihm am besten passt, falls es das Framework hergibt. Was in der Verwaltung alles passiert weiß ich aber nicht.
 
@2-HOT-4-TV: Google hat alleine deshalb schon Windows-PCs, weil sie ja auch Produkte für Windows und/oder den IE anbieten ;-) Und dann kommen natürllich, wie du schon richtig sagst, die Mitarbeiter-PCs hinzu, die auch teilweise auf Windows setzen.
Deshalb ist die Aussage von dem Troll "Wollknäuel Sockenbart" natürlich falsch ;-)
 
@sushilange: In C# flossen mehrere Programmiersprachen ein, hauptsächlich zwar Java (ursprünglich fast nur) aber auch mehrere andere, darunter ObjectPascal (= Delphi). Der Project Leader des .NET Teams bei MS, Anders Hejlsberg, sowie einige andere wichtige Programmierer im Team, stammen ursprünglich aus der Pascal / Delpi Ecke. Hejlsberg ist der Vater von TurboPascal. Unter MS (für den Wechsel hat er nach eigenen Angaben damals einen mehrstelligen Millionen Dollar Betrag von den Redmondern bekommen) hat er das .NET Framework u. C# mitentwickelt. Viele Delphi Features sind auch in C# miteingeflossen.
 
@Wollknäuel Sockenbar: Ja und welche Features? Ich hab vor C# in Delphi entwickelt und bisher keine Ähnlichkeit entdeckt. Ich finde nur sehr viele Ähnlichkeiten zu Java und C/C++
 
@Wollknäuel Sockenbar: CSharp kommt von der Syntax her von C/C++. Darum heißt es ja auch "C"Sharp und nicht PascalSharp oder DelphiSharp. Ne Java-nahe Abwandlung gab es lange als JSharp. Neben diesen Sprachen gibts übrigens auch noch diverse andere. Zum Beispiel Cobol für .NET ( http://tinyurl.com/6bas4ob ). Ich wüßte jetzt auch gar nicht welche "Features" einzelne Sprachen aus diesem Pool haben sollten die die anderen nicht haben. Es hängt nur von der Implementierung, also der Version der Sprache ab, was sie kann und was nicht. CSharp 5 kann mehr als CSharp 4, aber genauso viel wie VB.NET 5. Das schöne an der .NET-Technologie ist ja dass man sich seine bevorzugte Sprache heraussuchen kann und immer die gleichen Ergebnisse und die gleiche Performance bekommt wie mit den anderen Sprachen auch. Damit ist es z.B. erstmals möglich mit Visual Basic ein genauso schnelles Programm zu schreiben wie es früher nur mit C/C++ ging.
 
@DennisMoore: Mono hat teilweise bessere Performance als Java, warum also nicht einschließen? (+)
 
@Tomarr: Assembler als Vergleich? Es ist viel zu systemnah um auch nur annähernd gleiche Resultate zu erzielen, wenn zwei verschiedene Personen eine Implementierung anfertigen. Meine Erfahrung zeigt, dass es nahezu keinen Menschen mehr gibt, welcher schnelleren ASM statt C++ Code erzeugen kann. Man lässt sich eher den ASM Code vom C++ Compiler ausgeben und optimiert diesen. From scratch hat ausgedient...
 
Ach Leute... es gibt kein Scala Pro... das Pro steht für "Improved by Daniel Mahler" und es gibt ebenfalls ein C++ Pro, Java Pro und Go Pro. Der eigentliche Quellcode wurde nur von einer Person noch einmal überarbeitet. Wenn ihr berichtet, dann schaut euch die Quelle doch wenigstens mal richtig an. !
 
Mich als Entwickler würde interessieren, um was für einen Algorithmus es sich dabei handelt, nicht genau, aber ein paar Details wären natürlich nett gewesen. Anyone?
 
@btastic: Dann lese die Quelle (der verlinkte Bericht) im Beitrag, dort steht alles drin.
 
@Fallen][Angel: Ich Danke!
 
Mich hätten zudem auch eher noch mal Konkurrenten wie z.B. Python interessiert - da Python ja doch noch immer stark im kommen ist. Aber vielleicht wird der Vergleich ja bei entsprechendem Interesse noch einmal erweitert :)
 
@kazesama: in der Anzahl der Codezeilen, die benötigt werden wäre es bestimmt gar nicht schlecht, aber die Performance dafür unglaublich schlecht...
 
@cread: Ach, in Python kann man schon schnelleren Code schreiben als in Java, denke ich (bin selbst eher auf der Java-Schiene). Aber mich wundert es, dass Factor langsamer ist, das hätte ich für die schnellste Variante gehalten.
 
@JacksBauer: dann gleich Ook! :D
 
@cread: Ook! ist praktisch Brainfuck. Ich liebe effiziente Programmiersprachen! :D
 
@JacksBauer: Ich hab nach täglich 8 Stunden .net Programmierung schon genug. Aber bei Brainfuck, kannste mich nach 2 Stunden wahrscheinlich direkt in die Klapse stecken.
 
@JacksBauer: >+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[-]>++++++++[<++++>-]
<.#>+++++++++++[<+++++>-]<.>++++++++[<+++>-]<.+++.------.--------.[-]>++++++++[
<++++>-]<+.[-]++++++++++.
Zur Erklärung: -> Hello World in Brainfuck xD
 
@JacksBauer: Wenn du diese Sprache verwenden willst, kannst du damit IL-Code für .NET erzeugen. Es gibt dafür einen Compiler. "Brainfuck.NET" -> http://tinyurl.com/6bas4ob ... Leider kann man ihn nicht mehr runterladen weil die Projektseiten weg sind, aber vielleicht findest du noch irgendwo nen Installer oder den Sourcecode.
 
.... was heißt hier Google und Test. Gerade eben Seiten-Ladefehler. Bing funktioniert.
 
@oldbrandy: Und nachts ist kälter als draußen!
 
@Fallen][Angel: im ernst, habe den Browser Aurora und www.google.de sagt mir Seiten-Ladefehler. Ich nehme Bing, das funktioniert.
 
@oldbrandy: Bei mir klappt google.de in Internet Explorer 6-9, Firefox 3-4, Chrome 11-13 dev-m und Safari 4-5. Kann dein Problem nicht verstehen. Außerdem: Was hat das bitte hier zu suchen?
 
@Fallen][Angel: lesen?
 
@oldbrandy: Möglicherweise ein DNS-Problem? Bei mir funktionierte letzte Woche für einige Tage www.google.com nicht, www.google.de aber schon. Dummerweise ist .com beim Firefox in der Suchleiste eingetragen ;)
 
Mir ist irgendwie nicht klar welche Beweggründe Google für diesen Test hat. Nur dieses "GO" ? Da waren die Ergebnisse vorraussehbar.
 
@Lastwebpage: ein so großes Unternehmen muss schon untersuchen, welche sprache am besten geeignet ist, schließlich baut man eigene produkte darauf auf...
 
Der Vergleich der Dateigrößen hinkt hier aber etwas, da ein JAR quasi ein ZIP ist. Wenn man die C++-Exe noch zippt, wird die auch kleiner ;D
 
@dodnet: Eine gezippte EXE kannst du aber nicht ausführen, ein JAR schon.
 
@ElLun3s: ja, brauchst aber noch die JRE dazu
 
@tavoc: Die brauchst du sowieso, wenn du Java-Software ausführen willst.
 
@ElLun3s: Exe-Dateien lassen sich mit diversen Programmen auch komprimieren und immer noch ausführen, z.B. UPX.
 
@ElLun3s: laufzeitpaggäär :)
 
Nur Performance ist halt nicht immer alles. Lesbarer und Wartbarer Code hat auch seine Vorteile. Kommt halt immer auch auf die Anwendung an.
 
@Falcon: Das schließt sich aber nicht unbedingt aus.
 
@Falcon: Und? Was spricht da jetzt gegen C++?
 
Ich bleib bei C#. Gefällt mir diese Sprache. Nicht zu schwer und trozdem sehr mächtig.
 
Wer am mächtigsten ist, bekommt die beste Bewertung.
An alle Abschreiber!
 
Welch ein Wunder! Nativer Programmcode wird schneller ausgeführt als eine Interpretersprache. Wer hätte das gedacht. Ich bleib trotzdem bei C# und .Net. Alle anderen Vorteile überwiegen gegenüber dem Performancenachteil, der bei den meisten Anwendungen und der heutigen Rechnerperformance sowieso kaum noch ins Gewicht fällt.
 
@heidenf: codern von deiner Sorte ist doch klar das Performance teils teuer erkauft € werden muss und extra Rechenzeit auch extra € (Strom) kostet! so viel zu "... und der heutigen Rechnerperformance sowieso kaum noch ins Gewicht fällt.". aber bei ersten satzt kann man nur zustimmen. ;)
 
@BadMax: Arbeitszeit ist erheblich teurer als Hardware.
 
@heidenf: Noch!: und jeder Unnötige Takt kostet wie gesagt auch € ( Strom ) ist zwar nicht unbedingt viel aber in der Masse werden hier auch ordentlich Ressourcen verschwendet verschwendet. ;D
 
@BadMax: In Deutschland wird sie auch nicht sehr viel billiger werden. Genau das ist der Grund, warum die Entwicklung effizienter, d.h. schneller und damit billiger werden muss. Damit eben nicht alle IT-Projekte nach "Culo del mundo" outgesourced werden. Das geht mit dem .NET Framework sehr gut, weil es eine sehr mächtige Klassenbibliothek mit sich bringt. Wenn ich meine C++ Entwicklungszeiten mit meinen C# Entwicklungszeiten vergleiche, dann kann ich sagen, dass ich für Projekte, für die ich damals vielleicht 4 Wochen gebraucht habe heute noch 2-2,5 Wochen brauche.
Was den Energieverbrauch angeht: Moderne und schnelle Architekturen und Plattformen sind in der Regel auch Energie effizienter weil sie auf immer kleiner werdenden Strukturen basieren. Der Energieverbrauch pro Leistungseinheit ist in den letzten Jahren deutlich und stetig gesunken. Das Argument zählt also nicht, im Gegenteil.
 
@heidenf: da kann ich nur zustimmen: Sprachfeatures wie LINQ sind einfach göttlich :D
 
Der Test sagt doch gar nichts aus. Jetzt wissen wir nur dass C++ für diesen Algorithmus mit dem getestet wurde am schnellsten ist.
Jede Sprache hat ihren Einsatzzweck für den sie am besten geeignet ist. Wenn ich ein 3D Spiel programmiere nehme ich der Performance wegen C++. Wenn es nur ein 2D Spiel werden soll verwende ich Python. Wird es irgendeine Verwaltungsanwendung setze ich auf Java.
 
Ist das Ergebnis so überraschend?
 
@FAGabriel: hat mich auch nicht gewundert.
 
Na kein Wunder, wird doch C++ in reine Maschinensprache übersetzt, während die anderen Sprachen in Byte-Code übersetzt werden, die durch einen virtuellen Prozessor ausgeführt werden. Es ist physikalisch nicht möglich, dass eine Bytecode schneller abgearbeitet wird, als Maschinensprache, denn der Bytecodeinterpreter ist selbst ein Maschinenspracheprogramm.
 
@Der_da: Auf den ersten Blick stimmt das. Aber man muss dabei ein paar Sachen bedenken: Optimierst du ein natives Programm auf eine spezielle Maschine und ein spezielles Nutzerverhalten hin, wird es nichts schnelleres geben, richtig. Aber gleichzeitig verlierst du die Plattformunabhängigkeit und beim nächsten Benutzer, der die Software anders nutzt, kann es schon wieder anders aussehen. Die JIT-Sprachen haben Dinge wie HotSpot-Compiling und eben JIT-Compiling. Dadurch können sie trotz Plattformunabhängigkeit extrem stark auf die jeweilige Plattform und das jeweilige Nutzerverhalten optimiert werden.
 
LOLcode ist da um Längen besser :P
 
Hatte der nichts besseres zu tun? High performance / low level wird fast immer in C++ geschrieben und fertig.
Dafür ist C++ aber auch nicht besonders modern und für Anfänger schwerer zu lernen als z.B. C# oder Java.
Wo ich schon Java erwähne. Gedacht war es als Sprache für Hardware und deshalb gibt es auch sehr flotte Java Prozessoren. Die stehen auf den Kellerspeicher mit dem die JVM arbeitet.
Bis jetzt habe ich in diesem Kommentar nichts neues erzählt.

Und das Beste am Paper ist der Schluss: Der Durchschnittsprogrammierer kann seinen Code nicht optimieren. Ich dachte eher an: Können schon - aber meist wird's nicht bezahlt...
 
Zu Java: Wer es tatsächlich so strohdumm implementiert, wird mit Recht in der Performance bestraft. Wenn einer unserer Entwickler so etwas abgeben würde, wäre er nicht mehr lang Entwickler. Und was liest man am Ende des Papers: "Jeremy Manson brought the performance of Java on par with the original C++ version. ... Note that Jeremy deliberately refused to optimize the code further." Glückwunsch - und das durch Anwendung des Kopfes! Nicht die Sprachen sind das Problem, sondern ein vernünftig ausgebildeter Entwickler!
Kommentar abgeben Netiquette beachten!

Video-Empfehlungen

WinFuture Mobil

WinFuture.mbo QR-Code Auch Unterwegs bestens informiert!
Nachrichten und Kommentare auf
dem Smartphone lesen.

Folgt uns auf Twitter

WinFuture bei Twitter

Interessante Artikel & Testberichte

WinFuture wird gehostet von Artfiles