Removing intrinsic of Thread.isInterrupted() (original) (raw)

Yumin Qi yumin.qi at oracle.com
Tue Feb 25 09:25:35 PST 2014


Aleksey,

Thanks for the info, I modified as

     final int  NUM = 20000;
     boolean interrupts[] = new boolean[NUM];
     start = System.currentTimeMillis();
     for (int j = 0; j < 100; j++) {
         for (int i = 0; i < NUM; i++) {
             interrupts[i] = t.isInterrupted();
         }
     }
     finish = System.currentTimeMillis();
     osum = finish - start;
     System.out.println(NUM + " calls cost: " + osum  + " ms");

The result showed no difference (even a little better without intrinsic). I think I can remove it from hotspot.

Thanks Yumin

On 2/25/2014 12:36 AM, Aleksey Shipilev wrote:

On 02/25/2014 12:31 PM, Florian Weimer wrote:

On 02/25/2014 02:46 AM, Yumin Qi wrote:

isum = 0L; for (int i = 0; i < NUM; i++) { start = System.currentTimeMillis(); t.isInterrupted(); finish = System.currentTimeMillis(); isum += (finish - start); } This benchmark loop looks invalid to me. I think you have to store the result of t.isInterrupted(), perhaps to an array of booleans, and time the entire thing, not just the call itself. Indeed. That's how you do it with JMH: https://github.com/shipilev/benchmarks-scratch/blob/master/src/main/java/org/sample/ThreadIsInterrupted.java On my Linux x8664, JDK 8b129 the difference is minuscule. -Aleksey



More information about the hotspot-compiler-dev mailing list