Hi
Ich will ja nichts sagen, aber wie kommt man auf solchen Code? Ich
Ganz einfach, weil mir der Chef in der Ausbildung erklärt hat, dass wir kein ungleich verwenden sollen. Kostet jede Menge Performance, meinte er (ok, PL/I mit IBM 3270 Großrechner, aber prägt sich halt ein).
Ich weiss nicht, ob Dein Chef da bezueglich PL1 Recht hatte, aber bei Java ergibt die lesbarere Version (mit Negation der Bedingung) einen kuerzeren Bytecode (der auch tatsaechlich drei Befehle weniger enthaelt). Auch eine Zeitmessung spricht dafuer. Es ist halt doch ein Unterschied zwischen einer 20 Jahre alten Meinung und einem aktuellen Test (-; Interessant ist auch: Beim decompilieren mittels Mocca kommen beide Versionen auf denselben Source-Code raus. Bye class test { public static void main( String[] args ) { int a = 1; int b = 110000; long time = System.currentTimeMillis(); for ( int i = 0; i < 1000000000; i++ ) { if( !( a == 2 ) ) { a = 3; } } System.out.println( System.currentTimeMillis() - time ); time = System.currentTimeMillis(); for ( int i = 0; i < 1000000000; i++ ) { if ( b == 2 ); else { b = 3; } } System.out.println( System.currentTimeMillis() - time ); } } -- | Bodo Kaelberer | http://www.webkind.de/ | http://www.mehr-demokratie-wagen.de/ ---- | Haben oder Nichts sein