2016-04-13 12 views
0

Ich habe vor kurzem gelernt, dass nach einem Java-Programm kompilierte Klassen/Methoden statisch verknüpft sind und Methodennamen keinen Einfluss auf die Laufzeit haben.Wie viel Overhead wird durch das Aufrufen von Methoden aus einer anderen Klasse im Vergleich zum Aufrufen einer Methode aus der Klasse "came" erzeugt?

Meine Frage ist: Wie viel Overhead wird durch den Aufruf von Methoden aus einer anderen Klasse gegenüber dem Aufruf der Methode aus der gleichen Klasse erstellt?

Ich habe eine Bounds-Klasse, die eine Art meiner eigenen Version eines Rechtecks ​​ist. Ich habe eine andere Klasse, die im Grunde eine Entität ist, die die Zeicheninformationen enthält. Derzeit habe ich eine Methode in dieser Entity-Klasse, die die aktuellen Bounds aus der Liste der Punkte in der Klasse selbst generiert und die neuen Grenzen zurückgibt. Allerdings wollte ich diese Methode in die Bounds-Klasse verschieben und einfach die Liste der Punkte als Parameter nehmen und dann die Bounds zurückgeben. Ich möchte diese Methode nur in die Bounds-Klasse verschieben, um die Entity-Klasse zu bereinigen, da ich nicht glaube, dass diese Methode hierher gehören sollte. Ich müsste meinen Code in irgendeiner Methode aktualisieren. Meine Entity-Klasse behält kein Begrenzungsobjekt, da ich diese Methode für jede Methode mit der aktuellen Transformationsmatrix aktualisieren muss. Ich möchte nicht jeden Rahmen generieren, wenn ich ihn nur für die Mausauswahl benötige. Meine Vermutung ist, dass die lokale Methode schneller wäre.

Bound b = getBounds(); // This would have to change to the below 

Bound b = Bounds.getBounds(this.listOfPoints); // This is a List<Point> 
+1

Ihr Programm ist so "Kritiker", dass Sie sich darum kümmern müssen? –

+0

Wenn Sie ein Programm schreiben, in dem diese Art von Dingen wichtig ist (fast nie), programmieren Sie nicht in Java. Fragen wie diese sind in Java fast völlig bedeutungslos. – Radiodef

+0

Nicht wirklich, nein. Ich dachte nur an die Frage und wollte wissen, ob es einen Performanceeinfluss gibt. Ich sehe nichts falsch daran, die besten Praktiken für die Zukunft herauszufinden. –

Antwort

0

Java ist eine objektorientierte Sprache. Das bedeutet, dass Sie als Programmierer Ihren Code so schreiben sollten, dass sich die Methoden dort befinden, wo sie hingehören (d. H. Wo es für sie sinnvoll ist). In 99% der Fälle sollte die Leistung überhaupt nicht berücksichtigt werden. Java-Compiler und JVM haben sehr leistungsfähige und intelligente Leistungsoptimierer. Verlassen Sie sich darauf, um ihre Arbeit zu erledigen, und schreiben Sie Ihren Code so, dass er selbst erklärbar ist. Das würde Ihnen Zeit sparen, wenn Sie oder jemand anders Ihren Code pflegen/ändern muss.

Verwandte Themen