Hi,
hat final auswirkungen auf die Performance?
Ich meine die sonstige Bedeutung einer Konstanten kenn ich.
Aber wie wird das unter Java verwaltet?
cu Desian
Hi,
hat final auswirkungen auf die Performance?
Ich meine die sonstige Bedeutung einer Konstanten kenn ich.
Aber wie wird das unter Java verwaltet?
cu Desian
Moin
hat final auswirkungen auf die Performance?
nein. (ausser bei switch, da kann’s was bringen)
Aber wie wird das unter Java verwaltet?
Wie eine normale Variable mit „Schreibschutz“ (der sich allerdings umgehen lässt per JNI oder java.lang.reflect)
cu
Danke erstmal aber wie meinst du das mit dem Umgehen?
Aber wie wird das unter Java verwaltet?
Wie eine normale Variable mit „Schreibschutz“ (der sich
allerdings umgehen lässt per JNI oder java.lang.reflect)
cu Desian
Richtig. Gründe für die Verwendung von final sollten eher vom Design her begründet sein, als aus Performancegründen.
Siehe auch
http://www.javaperformancetuning.com/tips/final.shtml
/dirk
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Danke erstmal aber wie meinst du das mit dem Umgehen?
Man kann auch final-Variabeln verändern. Man muss dazu allerdings ein paar Bugs ausnützen die beim Zusammenspiel von JNI und dem reflect-System entstehen. Genaueres kann ich dir nicht sagen, aber such mal in dem Bug-System von sun die Bug-Liste für jre 1.4.0 mit dem Stichworten „JNI value protection“ und „JNI variable copyback“.
cu
hallo
hat final auswirkungen auf die Performance?
Ich meine die sonstige Bedeutung einer Konstanten kenn ich.
Aber wie wird das unter Java verwaltet?
bei dem java-kurs, den ich besucht habe, meinte der vortragende, dass der compiler bei klassen, die als final deklariert sind, ein paar optimierungen durchführen kann, die methodenaufrufe innerhalb einer solchen klasse etwas beschleunigen. das ganze ist zwar knapp an der messbarkeitsgrenze - kostet aber nix. man muss ja lediglich, wenn man mit dem projekt fertig ist, bei allen klassen das final davor setzen (natürlich nur jene klassen, von denen nicht mehr abgeleitet wird).
die info bezog sich allerdings noch auf java 1.3.1. java 1.4 war damals nur als beta verfügbar. ob sich da inzwischen etwas geändert hat, kann ich nicht sagen.
apropos: der vortragende kennt java seit der ersten version, die frei verfügbar war und macht auch sonst einen ziemlich kompetenten eindruck.
erwin