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

Reply via email to