Gibt es einen Unterschied zwischen Methodenaufrufzeit und Methodenausführungszeit? Ich denke, wir können die Ausführungszeit der Methode leicht messen. Aber wie kann ich die Methodenaufrufzeit messen? Würde es jedes Mal anders sein. (Java)Methodenaufruf gegen Methodenausführung
Antwort
Das Aufrufen einer Methode und das Ausführen einer Methode sind Synonyme - sie sind dasselbe.
Vielleicht verstehe ich Ihre Frage falsch.
Aufruf = Ausführung ---> Aufrufzeit = Ausführungszeit.
Aufrufzeit ist die Zeit, die zum Aufrufen oder Aufrufen der Methode benötigt wird. Ausführungszeit ist die Zeit, die benötigt wird, um den Hauptteil der Methode auszuführen.
Siehe 7.7 Invoking Methods und Instruction Set in der JVM-Spezifikation. Es gibt 4 verschiedene Möglichkeiten, in denen Java-Methoden aufgerufen werden können:
invokevirtual
- verwendet für Methodenaufrufeinvokeinterface
- für Interface-Methode verwendet, ruftinvokestatic
- verwendet für statische Methodeninvokespecial
- verwendet für Konstruktoren, private Methoden undsuper
Anrufe
invokestatic
ist normalerweise am schnellsten, weil es an eine bestimmte Klasse gebunden ist, während die anderen relativ langsam sein können. invokeinterface
ist möglicherweise die langsamste Klasse, da Klassen mehrere Schnittstellen implementieren können und die richtige Methode aufgelöst werden muss.
Verschiedene Aufrufe der gleichen Methode werden die gleiche Zeit dauern.
Das führt mich zu einer interessanten Frage. Die Sicherheit von Java hängt von der VM ab. Können Sie also invokestatic verwenden, um die Basisklassenversion einer abgeleiteten Klassenmethode aufzurufen? Wenn dem so ist, scheint das ein mögliches Sicherheitsloch zu sein. – Omnifarious
@Onmifarious: Um dies zu tun, müssten Sie die '.class' Datei ändern, und ich sehe das nicht als Sicherheitslücke in der VM. – casablanca
Konnten Sie nicht eine '.class' Datei mit einer neuen Klasse, die' invokestatic' genannt hat, für die Methoden einer anderen Klasse erstellen? – Omnifarious
- 1. Aufzeichnen jeder Methodenausführung
- 2. Django Signal auf Methodenaufruf (nicht Modellinstanz Triggerung)
- 3. Spring-Batch- oder Spring-Boot-Async-Methodenausführung?
- 4. Java 8 parallele Stream oder Methodenausführung
- 5. Ajax Methodenaufruf
- 6. Allgemeine Methodenaufruf
- 7. Java Methodenaufruf
- 8. Kristallraum gegen Irrlicht gegen .....?
- 9. JUnit Easymock Unerwarteter Methodenaufruf
- 10. Ablaufen ein Methodenaufruf
- 11. Async-Methodenaufruf und Identitätswechsel
- 12. Überprüfen Zustand vor Methodenaufruf
- 13. Wie funktioniert dieser Methodenaufruf?
- 14. Node.js - asynchroner Methodenaufruf Problem
- 15. InflateException auf inflater.inflate() Methodenaufruf
- 16. Zeitplan Methodenaufruf C#
- 17. Fragezeichensyntax beim Methodenaufruf
- 18. playframework java asynchroner Methodenaufruf
- 19. EJB @Schedule Ablaufen Methodenaufruf
- 20. Servlet lifecycle destroy() Methodenaufruf
- 21. Ambiguous Methodenaufruf zwischen Erweiterungsmethoden
- 22. Conditional Methodenaufruf von Strings
- 23. Force Base-Methodenaufruf
- 24. @ -Zeichen in Python Methodenaufruf
- 25. Spock erkennt keine Methodenaufruf
- 26. Dialogfeld erscheint nicht nach Methodenaufruf
- 27. Django: Methodenaufruf in django Modellen
- 28. Reflection empty stack und Methodenaufruf
- 29. Private Methodenaufruf-Ausnahme für ActionView
- 30. Überschrieben Methodenaufruf in Mutter Methode
Okay, also was es bedeutet, wenn ich messen muss, wie lange jeder Aufruf einer bestimmten Methode dauert, dann bedeutet das die Zeit, die eine Methode zur Ausführung benötigt. Also, wenn ich die Zeit vor dem Aufrufen einer Methode messen und nachdem die Methode zurückgibt und dann die Differenz berechnen, die mir die Methodenaufruf-/Methodenausführungszeit gibt. – kd44
@ kd44 - ziemlich viel. – Oded
Aufruf ruft die Methode auf, sobald Sie in der Ausführung der Methode sind. – m4tt1mus