title: Making ruby program run on all processors
body: <p>I've been looking at optimizing a ruby program that's quite calculation intensive on a lot of data.  I don't know C and have chosen Ruby (not that I know it well either) and I'm quite happy with the results, apart from the time it takes to execute.  It is a lot of data, and without spending any money, I'd like to know what I can do to make sure I'm maximizing my own systems resources.</p>
  <p>When I run a basic Ruby program, does it use a single processor?  If I have not specifically assigned tasks to a processor, Ruby won't read my program and magically load each processor to complete the program as fast as possible will it?  I'm assuming no...</p>
  <p>I've been reading a bit on speeding up Ruby, and in another thread read that Ruby does not support true multithreading (though it said JRuby does).  But, if I were to &quot;break up&quot; my program into two chunks that can be run in separate instances and run these in parralel...would these two chunks run on two separate processors automatically?  If I had four processors and opened up four shells and ran four separate parts (1/4) of the program - would it complete in 1/4 the time?</p>
  <h1>Update</h1>
  <p>After reading the comments I decided to give JRuby a shot.  Porting the app over wasn't that difficult.  I haven't used &quot;peach&quot; yet, but just by running it in JRuby, the app runs in 1/4 the time!!!  Insane.  I didn't expect that much of a change.  Going to give .peach a shot now and see how that improves things.  Still can't believe that boost.</p>
  <h1>Update #2</h1>
  <p>Just gave peach a try.  Ended up shaving another 15% off the time.  So switching to JRuby and using Peach was definitely worth it.</p>
  <p>Thanks everyone!</p>