Zum neuen Informatik-Forum >>
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Laufzeit

 
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Informatikerboard.de Foren-Übersicht -> Java/JSP
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Crotaphytus



Anmeldungsdatum: 08.05.2005
Beiträge: 213

BeitragVerfasst am: 21. Jun 2005 18:39    Titel: Laufzeit Antworten mit Zitat

Und mal wieder ein höchst seltsames Phänomen, das ich mir nicht so recht erklären kann...

Zum Vergleich von verschiedenen Hashfunktionen werden diese in ner Schleife jeweils 1000 mal aufgerufen und die Dauer dieser Schleife mit Hilfe der Funktion nanoTime() ermittelt. So weit so gut...

Jetzt kommts aber zu folgendem sehr interessanten Effekt: Wenn man den ganzen Block (also Schleife und Zeitmessung) n paar mal hintereinander ausführt scheint die Funktion schneller zu werden. Und zwar nicht nur unwesentlich, sondern um etwa den Faktor 20... Irgendwelche Ideen, woran das liegen könnte?

_________________
Genie oder Wahnsinn? Wer kann es wissen...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Tobias



Anmeldungsdatum: 15.02.2005
Beiträge: 149

BeitragVerfasst am: 22. Jun 2005 01:00    Titel: Antworten mit Zitat

Könnte an der internen Verarbeitung des Algorithmus durch die virtuelle Maschine liegen. Wenn intelligente Cache-Operationen am werkeln sind, dann wirds schonmal schneller. Ansonsten sind natürlich deine Angaben etwas dürftig um es vollständig nachvollziehen zu können.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Crotaphytus



Anmeldungsdatum: 08.05.2005
Beiträge: 213

BeitragVerfasst am: 22. Jun 2005 13:48    Titel: Antworten mit Zitat

Was würdest denn gerne wissen um es besser nachvollziehen zu können? Also am Hashalgorithmus selber kann denk ich nicht mehr so viel optimiert werden, zumindest einer davon besteht nur aus ner Multiplikation und ner Schiebeoperation.

Und was das seltsame ist: Bei den erstern tausend Durchläufen komm ich auf ne bestimmte Laufzeit pro Durchlauf. Bei den nächsten tausend nimmt die Laufzeit ein wenig ab, bei den dritten tausend hat man schließlich den heftigen Unterschied. Wenn da Sachen optimiert werden würden müsst sich das doch eigentlich früher bemerkbar machen... grübelnd

_________________
Genie oder Wahnsinn? Wer kann es wissen...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Tobias



Anmeldungsdatum: 15.02.2005
Beiträge: 149

BeitragVerfasst am: 22. Jun 2005 16:25    Titel: Antworten mit Zitat

Nein, ich meine keine Code-Optimierung sondern Cache-Optimierung. Es geht viel Zeit verloren beim Einlesen des Codes + Interpretation des Codes. Wenn du nun immer denselben Code ausführst, dann könnten diese beiden Punkte wegfallen bzw. mit weniger Aufwand durchgeführt werden weils schonmal gemacht wurde.

Aber das ist nur eine Vermutung. Genaues kann ich dir nicht sagen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Gast






BeitragVerfasst am: 28. Okt 2005 01:44    Titel: Antworten mit Zitat

Ich denke, dass da einfach die HotSpot Technik greift. Normalerweise wird ja per JIT das ganze auf die Maschine während der Laufzeit kompiliert und die VM führts dann halt entsprechend aus. Werden dagegen gewisse Blöcke öfters ausgeführt, die auch etwas Zeit brauchen, so kommt HotSpot ins Spiel. Bei dieser Technik wird die JIT-Übersetzung für die VM nochmals optimiert, z.B. indem schnellerer Code bei etwas höherem RAM-Bedarf erzeugt wird. Dies führt dann dazu, dass Code der eben häufiger gebraucht wird, schneller abgearbeitet werden kann und ich denke zusammen mit eventuellen Caching-Operationen, kann das schon Performance-Vorteile bringen.
Eventuell ist die Laufzeit ja eh schon recht gering und ab und zu rückt ja auch der GC aus, vllt wird der GC-Thread dann mal nicht ausgeführt und somit läufts schneller.
Nach oben
Beiträge der letzten Zeit anzeigen:   
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Informatikerboard.de Foren-Übersicht -> Java/JSP Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum nicht herunterladen