On 4/2/08, Charles Oliver Nutter <[EMAIL PROTECTED]> wrote:
>
>  I ran into a very strange effect when some Sun folks tried to benchmark
>  JRuby's multi-thread scalability. In short, adding more threads actually
>  caused the benchmarks to take longer.
>
>  The source of the problem (at least the source that, when fixed, allowed
>  normal thread scaling), was an increment, mask, and test of a static int
>  field. The code in question looked like this:
>
>  private static int count = 0;
>
>  public void pollEvents(ThreadContext context) {
>    if ((count++ & 0xFF) == 0) context.poll();
>  }
>
>  So the basic idea was that this would call poll() every 256 hits,
>  incrementing a counter all the while. My first attempt to improve
>  performance was to comment out the body of poll() in case it was causing
>  a threading bottleneck (it does some locking and such), but that had no
>  effect. Then, as a total shot in the dark, I commented out the entire
>  line above. Thread scaling went to normal.

That is rather odd.

Shouldn't count be volatile?

If it's declared as volatile does that make any difference?

John Wilson

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "JVM 
Languages" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/jvm-languages?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to