Chciałbym napisać kod rozwiązywania problemów, który mogę łatwo usunąć z późniejszych wersji innych niż debugowanie mojego programu. Wpadłem na:Jak inteligentna jest Java, jeśli instrukcje z ostatecznymi zmiennymi
final static boolean debug_on=true;
...
if (debug_on) { system.out.println() or logger.log(...) }
Czy Java jest wystarczająco inteligentna, aby usunąć instrukcję if z końcowego kodu bajtowego, jeśli debug == false?
Czy istnieje lepsza praktyka, aby osiągnąć cel, jakim jest utrzymanie kodu debugowania w ostatecznej wersji programu?
czy sprawdziłeś kod bajtowy? – PermGenError
Wygląda na to, że powinno być łatwe do przetestowania - skompiluj, a następnie użyj javap, aby zobaczyć kod bajtowy. (Spodziewałbym się, że będzie to zoptymalizowane przez JIT, a nie javac). –
Czy naprawdę warto ją zoptymalizować (test) za pomocą zmiennej końcowej? Zwykle używa się struktury rejestrowania, a następnie zapisuje instrukcje takie jak 'if (log.isDebugEnabled()) log.debug (" bla "+ x);'. Test jest wykonywany za każdym razem, ale '' blah "+ x 'nie jest oceniany. –