Project

General

Profile

Feature #3620

Updated by nahi (Hiroshi Nakamura) over 10 years ago

=begin 
  
  Queue, SizedQueue and ConditionVariable are important synchronization primitives and are nowadays implemented in Ruby. 
 
  Attached patch (initiated by myself and heavily enriched by Nobu) contains these sync primitives implemented in C, which makes them faster (see [1] for the benchmark's code): 
 
  Rehearsal ------------------------------------------------- 
  Q#push            1.590000     0.010000     1.600000 (    1.605502) 
  T#push            0.600000     0.010000     0.610000 (    0.630444) 
  Q#pop             4.390000     0.000000     4.390000 (    4.389781) 
  T#pop             0.580000     0.000000     0.580000 (    0.578918) 
  Q#empty?          0.480000     0.000000     0.480000 (    0.484305) 
  T#empty?          0.360000     0.000000     0.360000 (    0.358559) 
  Q#clear           1.210000     0.000000     1.210000 (    1.214494) 
  T#clear           0.600000     0.000000     0.600000 (    0.588611) 
  Q#size            0.370000     0.000000     0.370000 (    0.365587) 
  T#size            0.350000     0.000000     0.350000 (    0.356985) 
  Q#num_waiting     0.380000     0.000000     0.380000 (    0.379199) 
  T#num_waiting     0.370000     0.000000     0.370000 (    0.368075) 
  --------------------------------------- total: 11.300000sec 
 
  It has already been discussed on ruby-core (see ruby-core:31100). 
 
  This patch is one of the deliverables of my RubySoC project (slot #17): "Improving Ruby's Synchronization Primitives and Core Libraries" [2,3] 
 
  [1] http://github.com/panaggio/rubysoc-2010/blob/master/benchmarks/queue.rb 
  [2] http://pastebin.com/viSnfqe6 
  [3] http://rubysoc.org/projects 
 
 =end 
 

Back