Module: Array::ParallelMap::Etest
- Defined in:
- lib/vex/base/array/parallel_map.rb
Constant Summary collapse
- MAX =
1000
Instance Method Summary collapse
- #calculate(repeat, method) ⇒ Object
- #calculate_parallel(repeat) ⇒ Object
- #calculate_serial(repeat) ⇒ Object
- #test_peach ⇒ Object
- #test_pmap ⇒ Object
- #test_pmap_timeout ⇒ Object
Instance Method Details
#calculate(repeat, method) ⇒ Object
55 56 57 58 59 60 61 |
# File 'lib/vex/base/array/parallel_map.rb', line 55 def calculate(repeat, method) (1..repeat).to_a.send(method) do |p| (1..MAX).inject(0) do |sum, i| sum + p * i end end end |
#calculate_parallel(repeat) ⇒ Object
67 68 69 |
# File 'lib/vex/base/array/parallel_map.rb', line 67 def calculate_parallel(repeat) calculate(repeat, :pmap) end |
#calculate_serial(repeat) ⇒ Object
63 64 65 |
# File 'lib/vex/base/array/parallel_map.rb', line 63 def calculate_serial(repeat) calculate(repeat, :map) end |
#test_peach ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/vex/base/array/parallel_map.rb', line 77 def test_peach semaphore = Mutex.new results = [] array = [ 1, 2, 3, 4] r = array.peach do |p| semaphore.synchronize { results << p } end assert_equal(array, results.sort) assert_equal(array, r) end |
#test_pmap ⇒ Object
71 72 73 74 75 |
# File 'lib/vex/base/array/parallel_map.rb', line 71 def test_pmap serial = calculate_serial(4) parallel = calculate_parallel(4) assert_equal(serial, parallel) end |
#test_pmap_timeout ⇒ Object
90 91 92 93 94 95 96 97 |
# File 'lib/vex/base/array/parallel_map.rb', line 90 def test_pmap_timeout r = [1, 2].pmap(:timeout => 0.1) do |p| sleep 0.2 p * p end assert_equal([], r) end |