Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.net  
   

Die mobilen Seiten von c++.net:
https://m.c-plusplus.net

  
C++ Forum :: Rund um die Programmierung ::  Schneller durch JIT?  
Gehen Sie zu Seite 1, 2, 3, 4  Weiter
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
sfdsdfs
Unregistrierter




Beitrag sfdsdfs Unregistrierter 11:19:36 08.01.2017   Titel:   Schneller durch JIT?            Zitieren

Es wird ja immer gesagt, das Java durch den JITter theoretisch schneller sein könnte als etwas fest kompiliertes. Kam das in der Praxis schon mal vor?
SeppJ
Global Moderator

Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 27422
Beitrag SeppJ Global Moderator 11:25:56 08.01.2017   Titel:              Zitieren

Zählen als "Praxis" auch künstlich getunte Benchmarks, die diese Eigenschaft besonders hervor heben und dafür gewisse Nachteile wenig zum Zuge kommen lassen?

_________________
Korrekte Rechtschreibung und Grammatik sind das sprachliche Äquivalent zu einer Dusche und gepflegter Kleidung.
Naja
Unregistrierter




Beitrag Naja Unregistrierter 12:13:10 08.01.2017   Titel:              Zitieren

Dort, wo Performance wichtig ist, wird sowieso auf der GPU ausgelagert oder man nimmt SIMD-Libraries.
Dort, wo die Performance weniger wichtig ist, da wird JIT gegenüber nativen Lösungen nicht viel bringen. Was bringt mir das, wenn ich nur in 1% der Fälle ein SSE 4.2 Befehl nutzen kann? Dafür sind Sprachen wie Java in vielen anderen Fällen langsamer. JIT sind Gut-Genug-Lösungen. Niemand nimmt Java, weil er maximale Performance will. Java wird aus anderen Gründen genommen.
sfdsdfs
Unregistrierter




Beitrag sfdsdfs Unregistrierter 12:37:06 08.01.2017   Titel:              Zitieren

SeppJ schrieb:
Zählen als "Praxis" auch künstlich getunte Benchmarks, die diese Eigenschaft besonders hervor heben und dafür gewisse Nachteile wenig zum Zuge kommen lassen?
Von mir aus.
Zeus
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.09.2003
Beiträge: 3070
Beitrag Zeus Mitglied 13:22:48 08.01.2017   Titel:   Re: Schneller durch JIT?            Zitieren

sfdsdfs schrieb:
Es wird ja immer gesagt, das Java durch den JITter theoretisch schneller sein könnte als etwas fest kompiliertes. Kam das in der Praxis schon mal vor?


Wie soll etwas schneller laufen, wenn die Bytecode Kompilierung in die Runtime der Anwendung dazugehört. Natürlich hat die Virtuelle Maschine sehr schlaue Mechanismen (Code Cache, partiale Optimierung, ...) um mit einem JIT Optimum an Performance rauszuholen. Die Möglichkeit von dynamischen Optimierung als Anpassung auf das CPU Target hätte ein sehr großes Potential, aber ich hab bis jetzt nix gelesen, dass diese Fähigkeit in der JVM/.NET implementiert wären - aber vielleicht bin ich auch nur zu faul oder zu dumm xD
Th69
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.03.2008
Beiträge: 4396
Beitrag Th69 Mitglied 14:56:37 08.01.2017   Titel:              Zitieren

Also für .NET s. Understanding .NET Just-In-Time Compilation, d.h. je nach Target gibt es unterschiedliche JIT-Compiler, welche dann die spezifischen Optimierungen vornehmen.
Zee++
Mitglied

Benutzerprofil
Anmeldungsdatum: 05.01.2017
Beiträge: 10
Beitrag Zee++ Mitglied 15:05:25 08.01.2017   Titel:              Zitieren

Ich stelle mir das so vor, dass z.B. eine Schleife, mit sagen wir mal 10.000 Iterationen, durchlaufen wird. Die ersten 3 Runden laufen langsam ab, da der JIT sich erst anschauen muss was da genau live passiert. Mit diesen Infos optimiert er immer weiter. Aber ab dann läuft der Schleifenkörper schneller ab, weil der JIT eine Lösung gefunden hat, die einem statischen Compiler vielleicht entgangen wäre.

Soweit meine theoretische Überlegung zu dem Thema. In der Praxis habe ich keine Ahnung ob sowas wirklich funktioniert.
Zeus
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.09.2003
Beiträge: 3070
Beitrag Zeus Mitglied 16:39:07 08.01.2017   Titel:              Zitieren

Th69 schrieb:
Also für .NET s. Understanding .NET Just-In-Time Compilation, d.h. je nach Target gibt es unterschiedliche JIT-Compiler, welche dann die spezifischen Optimierungen vornehmen.


Viel zu Allgemein und keine Untersuchung oder Belege für die Aussage.
Außerdem gibst nur x86, x64 und ARM(?).
Das du jeweilige Code Generatoren für die Target CPU brauchst, ist ja klar, weil ein ARM kein x86/x64 oder andersrum versteht. Das diese jeweilige andere Optimierung macht (sollte klar sein), aber das sind auch im diesen Sinne keine dynamischen Optimierungen.

Ein Beispiel ist, du lässt dein .NET App auf dein alt System laufen optimal, dann testet du dei App auf deine neuste Maschine, wunders dich über die Schnelligkeit, weil die neuste Instruktion der CPU auch vom JIT mitbenutzt können. Theoretisch möglich, praktisch bei ein Befehlsatz der 9x% gleich ist - keine Ahnung, ob es den Entwickler der JVM oder CLR die Komplexität wert ist, dass zu implementieren.
Mechanics
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.01.2012
Beiträge: 4022
Beitrag Mechanics Mitglied 18:26:23 08.01.2017   Titel:              Zitieren

Wir hatten hier doch auch irgendwann einen Fall, bei dem Java schneller war und es konnte sich erstmal keiner erklären. Dann war die Vermutung, dass der JIT Compiler ein bestimmtes Muster "erkannt" hat und daraufhin optimiert hat. Das war quasi zufällig schneller, weil die Daten in bestimmter Reihenfolge kamen. Kaum waren die Daten zufällig sortiert, schon war diese Annahme falsch und die Java Variante war langsamer. Kann mich jetzt aber nicht mehr ganz genau dran erinnern.
asc
Mitglied

Benutzerprofil
Anmeldungsdatum: 13.01.2007
Beiträge: 6625
Beitrag asc Mitglied 18:59:17 08.01.2017   Titel:   Re: Schneller durch JIT?            Zitieren

sfdsdfs schrieb:
Es wird ja immer gesagt, das Java durch den JITter theoretisch schneller sein könnte als etwas fest kompiliertes. Kam das in der Praxis schon mal vor?


Was ist für dich Praxis? Ich habe zumindest von wissenschaftlichen Projekten gehört, bei der im wesentlichen immer die gleichen Algorithmen zur Anwendung kamen, bei dem das der Fall sein sollte. Selbst bin ich nicht in dem Bereich tätig um das zu verifizieren.

_________________
in theory there's no difference between theory and practice. in practice there is. (yogi berra)

In der Theorie gibt es kein Unterschied zwischen Theorie und Praxis. In der Praxis sehr wohl.
C++ Forum :: Rund um die Programmierung ::  Schneller durch JIT?  
Gehen Sie zu Seite 1, 2, 3, 4  Weiter
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.net ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.