Ken, Looking at this again, there appears to one too many byte masks. bar = ((((foo << 23) >> 31) | foo) & ~(foo>>31))&0xFF; should do.
Peter Ken Warner wrote: > 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". > > > -- Peter B. West <http://cv.pbw.id.au/> Folio <http://defoe.sourceforge.net/folio/> =========================================================================== 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".