Charles Nutter wrote:
> 
> JRuby benchmarking:
> 
> * Use Java 6+
> 
> Java 6 is much faster than Java 5. Java 7 is faster still in many cases.
> 
> * Pass --server if -v output says "client" VM

I didn't consider it because the behavior I showed looks wrong for
either Java 5 or Java 6 in either client or server mode.  Indeed I
obtained the same results with Java 6 Server VM.

A computation split into two parallel threads takes more time than the
same computation with one thread.  'top' reports 185% CPU and 100% CPU
respectively.

I was not concerned with comparing MRI and jruby.  MRI was a baseline
to demonstrate that Pure's parallelism was working in the first place.

I was unable to find your eaa9e7f commit so I grabbed the latest
master branch.

jruby 1.5.0.dev (ruby 1.8.7 patchlevel 174) (2009-11-02 55366a1) (Java 
HotSpot(TM) 64-Bit Server VM 1.6.0_15) [x86_64-java]

Core 2 Duo 1.83GHz; all apps closed except Terminal; benchmarks made
without 'top' running.

Rehearsal ------------------------------------------------------------
1 thread, 1 interpreter    3.422000   0.000000   3.422000 (  3.422000)
2 threads, 1 interpreter   4.008000   0.000000   4.008000 (  4.008000)
--------------------------------------------------- total: 7.430000sec

                               user     system      total        real
1 thread, 1 interpreter    2.942000   0.000000   2.942000 (  2.942000)
2 threads, 1 interpreter   3.595000   0.000000   3.595000 (  3.595000)

Results are the same with Pure removed:

  require 'benchmark'

  def left
    (1..10_000_000).inject(0) { |acc, n| acc + n }
  end

  def right
    (1..10_000_000).inject(0) { |acc, n| acc + n }
  end

  Benchmark.bmbm { |bm|
    bm.report("1 thread") {
      Thread.new {
        [left, right]
      }.value
    }
    bm.report("2 threads") {
      [
        Thread.new { left },
        Thread.new { right },
      ].map { |t| t.value }
    }
  }

Rehearsal ---------------------------------------------
1 thread    6.726000   0.000000   6.726000 (  6.726000)
2 threads   7.478000   0.000000   7.478000 (  7.478000)
----------------------------------- total: 14.204000sec

                user     system      total        real
1 thread    6.636000   0.000000   6.636000 (  6.636000)
2 threads   8.196000   0.000000   8.196000 (  8.196000)

-- 
Posted via http://www.ruby-forum.com/.