Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Die Methode einige hundert/tausend/millionen Mal aufrufen. Alles andere hätte mit der Praxis auch nichts zu tun.
Aber vorsicht, Mikrobenchmarks sind sehr schwierig richtig zu machen und in den meisten Fällen absolut vergeudete Zeit.
Etwas genauer ist vielleicht System.nanoTime() (gibt's sein Java 1.5). Aber ansonsten hat Wildcard recht. Solche Benchmarks sind bestenfalls (wenn man sie "richtig" macht) eine grobe Orientierung.
Ich konnte jetzt tatsächlich nicht so viel mit den Ergebnissen anfangen.. Vielleicht könnt ihr mir theoretisch helfen:
Code:
boolean keyA;
boolean keyB;
boolean valueA;
boolean valueB;
for (int i = 0; i < numOfMatchings; i++)
{
for (int j = 0; !matchingAdded; j++)
{
keyA = false;
keyB = false;
valueA = false;
valueB = false;
etc. etc.
}
}
Ich habe mich gefragt, ob es performance kostet, die "booleans" ganz am Anfang in die zweite for-Schleife reinzunehmen. Das wäre vielleicht richtiger, weil sie ja nur innerhalb der zweiten Schleife gebraucht werden!?
Was haltet ihr davon. Das würde dann so aussehen:
Code:
for (int i = 0; i < numOfMatchings; i++)
{
for (int j = 0; !matchingAdded; j++)
{
boolean keyA = false;
boolean keyB = false;
boolean valueA = false;
boolean valueB = false;
etc. etc.
}
}
Ich weiss nicht, wie Variablen in Java allokiert werden, aber zumindest unter C ist das Allokieren einfach nur ein Verschieben des Stack Pointers und geschieht in konstanter Zeit.
Aber zur Frage: So spaet wie moeglich und nach Moeglichkeit auch gleich initialisieren waere meine Meinung. Ergo das zweite.
Optimieren kann der Compiler und später der JIT Compiler besser. Soll der sich darum kümmern.
Bei diesem Beispiel ist es sowieso Jacke wie Hose, aber generell macht man es dem JIT durch pseudo optimierten Code nur schwerer zu erkennen was da eigentlich passieren soll.
Ein Java Programmierer soll sauber, effizient und 'ehrlich' programmieren um den Rest kümmert sich der JIT.
Die 3 wichtigsten Regeln für Performance Optimierungen sind:
1. Don't
2. Don't
3. Don't
Wenn man dann irgendwann tatsächlich auf ein Performanceproblem stößt:
Bloß nicht drauf los werkeln, sondern den Profiler Anwerfen.
Bis dahin lautet die ultimative Antwort auf die Geschwindigkeitsfrage jedoch: "Schnell genug"
Eine Faustregel für die Deklaration von Variablen könnte sein: Der Scope sollte so klein wie möglich sein. Wenn du sie nur in der innersten Schleife brauchst, dann deklarier' sie auch genau da. (Das andere extrem wäre ja, ALLE Variablen als Fields in die Klasse zu packen, und keine lokalen Variablen mehr zu verwenden :autsch: )
Wildcard hat gesagt.:
Die 3 wichtigsten Regeln für Performance Optimierungen sind:
1. Don't
2. Don't
3. Don't
Falls ja, dann sollten die so winzig sein, dass die erste Regel fuer Optimierungen greift, wenn andernfalls die Lesbarkeit des Codes verschlechtert wird.