Methoden - Geschwindigkeit

O2016

Bekanntes Mitglied
Was mich interessieren würde, es gibt ja Methoden z.B. für Listen die Methode add
Sind die vorgegebenen Methoden eig von der Laufzeit perfekt oder programmieren "echte Programmierer" solche Methoden selber um mehr performance zu erhalten?
 
Ja, ist alles perfekt. Mach dir über solche Dinge bei den Standard-Java-Klassen keine Gedanken. Die wichtigere Frage ist: Benutzt du für deinen ganz konkreten Anwendungsfall auch die richtigen Datenstrukturen/Klassen und damit Algorithmen?
 
Ich habe die Frage sehr "handwavingly" mit "ja, ist alles perfekt" abgetan, weil ich nicht glaube, dass solche Fragestellungen für @O2016 gerade von Relevanz sein sollten. Um abschätzen zu können, ob eine Methode nun "perfekt" ist oder nicht, hängt es natürlich von dem Anwendungsfall und den Rahmenbedingungen ab, in welchem man die Klasse/Methode einsetzt. Das Wort "perfekt" ist natürlich sehr schwammig und niemand kann sich darunter etwas vorstellen, bzw. jeder stellt sich darunter etwas anderes vor:
- Läuft die Methode immer mit derselben, deterministischen Laufzeit?
- Alloziiert die Methode irgendwelche Objekte, die zu GC-Spikes führen können?
- Ist die Methode so implementiert, dass sie einfach durch HotSpot per Escape Analysis inlined werden kann?
- Wieviel Speicher wird generell für die Datenstruktur gebraucht?
- Wie ist der Tradeoff zwischen Speicherverwendung und Laufzeit?
- ...
Man kann, außer bei den aller-trivialsten Algorithmen _niemals_ sagen, dass eine Methode nun perfekt ist oder nicht, da es wie gesagt von dem Anwendungsfall und den eigenen Rahmenbedingungen abhängt.
Aber nach wie vor glaube ich nicht, dass das für @O2016 aktuell auch nur ansatzweise von Relevanz sein sollte, wie die Performancecharakteristiken der JRE-Klassen sind.
 
Schließlich sind die Programmierer dieser Klassen ja nicht unbedingt die besten der Welt.....
Das trifft Erfahrungsgemäß noch mehr auf die meisten von denen zu, die meinen, sie könnten es mal eben besser programmieren...

Ist ja auch nicht so, als wird das JDK nur von Nulpen programmiert, da hängen ja schon "die Großen" in der IT-Welt hinter - ist aber eben auch nur eine "generelle" Lösung, spezialisierte Lösungen sind oft besser, aber eben nur in Spezialfällen.
 
ist aber eben auch nur eine "generelle" Lösung, spezialisierte Lösungen sind oft besser, aber eben nur in Spezialfällen.
Absolut. Genau das! Das JDK muss generalisiert bleiben, um alle Anwendungsfälle so gut wie möglich abdecken zu können. Und das hat wenig damit zu tun, wie gut nun die Programmierer sind, die diese Klassen programmieren, als vielmehr, welche Anwendungsfälle sie antizipieren und unterstützen wollen.
Ich denke schon, dass die JDK Klassen bis zum Abwinken microbenchmarked werden und Parameter auf die JVM getuned werden, mit denen sie ausgeliefert werden. Wer kann auf dieses KnowHow besser zurückgreifen als die Oracle-Leute.
Und, wer schon einmal ein bisschen in den Mailinglisten der JDK/JVM Leute gelesen hat, der wird gemerkt haben, was das für krasse Überflieger sind. Da sind wir hier alle noch Meilenweit von entfernt. Und bei den meisten Collections-Klassen reden wir hier über Joshua Bloch und Doug Lea...
 
Zuletzt bearbeitet:

Zurück
Oben