summaryrefslogtreecommitdiff
path: root/etc/speedup2/multi.rb
diff options
context:
space:
mode:
Diffstat (limited to 'etc/speedup2/multi.rb')
-rw-r--r--etc/speedup2/multi.rb30
1 files changed, 17 insertions, 13 deletions
diff --git a/etc/speedup2/multi.rb b/etc/speedup2/multi.rb
index c32c140..bd9551c 100644
--- a/etc/speedup2/multi.rb
+++ b/etc/speedup2/multi.rb
@@ -119,20 +119,24 @@ end
N = (5 ** (ARGV.first || 8).to_i)
code = (1..N).map { |n| "#{n} alpha, beta, (gamma).\n" }.join
-time = Benchmark.realtime do
- out = Encoder.new.encode(Scanner.new(code))
-end
-puts 'Current: %0.2fs -- %0.0f kTok/s' % [time, (N * 11 + 1) / time / 1000]
-
slice_size = (ARGV[1] || 100).to_i
-time = Benchmark.realtime do
- threads = []
- code.lines.each_slice slice_size do |lines|
- threads << Thread.new do
- Thread.current[:out] = Encoder.new.encode(Scanner.new(lines.inject(&:+)))
+3.times do
+ time = Benchmark.realtime do
+ threads = []
+ code.lines.each_slice slice_size do |lines|
+ threads << Thread.new do
+ Thread.current[:out] = Encoder.new.encode(Scanner.new(lines.inject(&:+)))
+ end
end
+ threads.each(&:join)
+ out = threads.map { |t| t[:out] }.join
+ end
+ puts 'Multi-Threaded: %0.2fs -- %0.0f kTok/s' % [time, (N * 11 + 1) / time / 1000]
+end
+
+3.times do
+ time = Benchmark.realtime do
+ out = Encoder.new.encode(Scanner.new(code))
end
- threads.each(&:join)
- out = threads.map { |t| t[:out] }.join
+ puts 'Current: %0.2fs -- %0.0f kTok/s' % [time, (N * 11 + 1) / time / 1000]
end
-puts 'Multi-Threaded: %0.2fs -- %0.0f kTok/s' % [time, (N * 11 + 1) / time / 1000]