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".