I did a test -- I did it on a real slow (800mhz) machine so the differences are magnified but the shift clamp method works a little faster than the logical test. Enough to include it in my code. Results at the bottom. And surely enough to be used as the clamping strategy in:
com.sun.media.jai.util.ImageUtil.java int foo = 0; int bar = 0; long t0 = 0l; long t1 = 0l; for(int j = 0; j < 100; j++) { t0 = System.currentTimeMillis(); for(int i = -10000000; i < 10000000; i++) { //foo = (i >>> 31) | (i & 0xFF); //foo = (i & 0xff); foo = i; bar = (((((foo << 23) >> 31) | foo) & 0xFF) & ~(foo>>31))&0xFF; //System.err.println(i + ": foo = " + foo + ", bar = " + bar ); } t1 = System.currentTimeMillis(); System.err.println("(1)Time = " +(t1 - t0)); t0 = System.currentTimeMillis(); for(int i = -10000000; i < 10000000; i++) { foo = i; if(foo > 255)foo = 255; else if(foo < 0)foo = 0; //System.err.println(i + ": foo = " + foo + ", bar = " + bar ); } t1 = System.currentTimeMillis(); System.err.println("(2)Time = " +(t1 - t0)); System.err.println("----------------"); } Ken Warner wrote:
Hey Peter, it works! Nice job! I'll work it into my code and see if I get any speed up. I only time to the milliseconds but a millisecond here -- a millisecond there. Pretty soon it adds up to a decisecond... int foo = 0; int bar = 0; for(int i = -10; i < 265; i++) { //foo = (i >>> 31) | (i & 0xFF); //foo = (i & 0xff); foo = i; bar = (((((foo << 23) >> 31) | foo) & 0xFF) & ~(foo>>31))&0xFF; System.err.println(i + ": foo = " + foo + ", bar = " + bar ); } -5: foo = -5, bar = 0 -4: foo = -4, bar = 0 -3: foo = -3, bar = 0 -2: foo = -2, bar = 0 -1: foo = -1, bar = 0 0: foo = 0, bar = 0 1: foo = 1, bar = 1 2: foo = 2, bar = 2 3: foo = 3, bar = 3 . . . 252: foo = 252, bar = 252 253: foo = 253, bar = 253 254: foo = 254, bar = 254 255: foo = 255, bar = 255 256: foo = 256, bar = 255 257: foo = 257, bar = 255 258: foo = 258, bar = 255
1)Time = 200 (2)Time = 221 ---------------- (1)Time = 220 (2)Time = 210 ---------------- (1)Time = 231 (2)Time = 250 ---------------- (1)Time = 180 (2)Time = 221 ---------------- (1)Time = 170 (2)Time = 220 ---------------- (1)Time = 221 (2)Time = 270 ---------------- (1)Time = 190 (2)Time = 221 ---------------- (1)Time = 190 (2)Time = 220 ---------------- (1)Time = 160 (2)Time = 221 ---------------- (1)Time = 170 (2)Time = 210 ---------------- (1)Time = 191 (2)Time = 220 ---------------- (1)Time = 180 (2)Time = 210 ---------------- (1)Time = 181 (2)Time = 220 ---------------- (1)Time = 170 (2)Time = 221 ---------------- (1)Time = 180 (2)Time = 220 ---------------- (1)Time = 180 (2)Time = 211 ---------------- (1)Time = 180 (2)Time = 210 ---------------- (1)Time = 181 (2)Time = 220 ---------------- (1)Time = 170 (2)Time = 210 ---------------- (1)Time = 181 (2)Time = 210 ---------------- (1)Time = 180 (2)Time = 221 ---------------- (1)Time = 170 (2)Time = 220 ---------------- (1)Time = 180 (2)Time = 211 ---------------- (1)Time = 180 (2)Time = 210 ---------------- (1)Time = 180 (2)Time = 221 ---------------- (1)Time = 170 (2)Time = 220 ---------------- (1)Time = 181 (2)Time = 210 ---------------- (1)Time = 180 (2)Time = 210 ---------------- (1)Time = 180 (2)Time = 220 ---------------- (1)Time = 170 (2)Time = 221 ---------------- (1)Time = 180 (2)Time = 220 ---------------- (1)Time = 170 (2)Time = 251 ---------------- (1)Time = 210 (2)Time = 220 ---------------- (1)Time = 181 (2)Time = 210 ---------------- (1)Time = 180 (2)Time = 221 ---------------- (1)Time = 200 (2)Time = 370 ---------------- (1)Time = 181 (2)Time = 210 ---------------- (1)Time = 180 (2)Time = 221 ---------------- (1)Time = 180 (2)Time = 210 ---------------- (1)Time = 180 (2)Time = 221 ---------------- (1)Time = 170 (2)Time = 220 ---------------- (1)Time = 181 (2)Time = 210 ---------------- (1)Time = 180 (2)Time = 210 ---------------- (1)Time = 181 (2)Time = 220 ---------------- (1)Time = 170 (2)Time = 291 ---------------- (1)Time = 180 (2)Time = 220 ---------------- (1)Time = 170 (2)Time = 221 ---------------- (1)Time = 180 (2)Time = 220 ---------------- (1)Time = 181 (2)Time = 230 ---------------- (1)Time = 180 (2)Time = 210 ---------------- (1)Time = 181 (2)Time = 220 ---------------- (1)Time = 170 (2)Time = 221 ---------------- (1)Time = 180 (2)Time = 230 ---------------- (1)Time = 190 (2)Time = 211 ---------------- (1)Time = 190 (2)Time = 250 ---------------- (1)Time = 191 (2)Time = 220 ---------------- (1)Time = 180 (2)Time = 221 ---------------- (1)Time = 160 (2)Time = 230 ---------------- (1)Time = 220 (2)Time = 241 ---------------- (1)Time = 180 (2)Time = 250 ---------------- (1)Time = 191 (2)Time = 210 ---------------- (1)Time = 180 (2)Time = 221 ---------------- (1)Time = 160 (2)Time = 220 ---------------- (1)Time = 170 (2)Time = 221 ---------------- (1)Time = 180 (2)Time = 240 ---------------- (1)Time = 181 (2)Time = 220 ---------------- (1)Time = 180 (2)Time = 220 ---------------- (1)Time = 191 (2)Time = 210 ---------------- (1)Time = 180 (2)Time = 221 ---------------- (1)Time = 300 (2)Time = 361 ---------------- (1)Time = 230 (2)Time = 220 ---------------- (1)Time = 170 (2)Time = 221 ---------------- (1)Time = 220 (2)Time = 250 ---------------- (1)Time = 211 (2)Time = 320 ---------------- (1)Time = 180 (2)Time = 211 ---------------- (1)Time = 180 (2)Time = 230 ---------------- (1)Time = 181 (2)Time = 210 ---------------- (1)Time = 180 (2)Time = 220 ---------------- (1)Time = 181 (2)Time = 230 ---------------- (1)Time = 180 (2)Time = 211 ---------------- (1)Time = 180 (2)Time = 210 ---------------- (1)Time = 180 (2)Time = 221 ---------------- (1)Time = 180 (2)Time = 210 ---------------- (1)Time = 181 (2)Time = 210 ---------------- (1)Time = 180 (2)Time = 220 ---------------- (1)Time = 171 (2)Time = 220 ---------------- (1)Time = 180 (2)Time = 211 ---------------- (1)Time = 180 (2)Time = 220 ---------------- (1)Time = 170 (2)Time = 271 ---------------- (1)Time = 310 (2)Time = 371 ---------------- (1)Time = 170 (2)Time = 240 ---------------- (1)Time = 181 (2)Time = 290 ---------------- (1)Time = 180 (2)Time = 211 ---------------- (1)Time = 180 (2)Time = 220 ---------------- (1)Time = 180 (2)Time = 231 ---------------- (1)Time = 180 (2)Time = 210 ---------------- (1)Time = 181 (2)Time = 330 ---------------- (1)Time = 331 (2)Time = 230 ---------------- (1)Time = 180 (2)Time = 271 ---------------- (1)Time = 260 (2)Time = 270 ---------------- =========================================================================== To unsubscribe, send email to [EMAIL PROTECTED] and include in the body of the message "signoff JAVA2D-INTEREST". For general help, send email to [EMAIL PROTECTED] and include in the body of the message "help".