Sha256: c0b4c7f842f36ec23b9ddbde754db5afedf55934c15fda9a20ace563a8964584
Contents?: true
Size: 1.14 KB
Versions: 2
Compression:
Stored size: 1.14 KB
Contents
#!/usr/bin/env ruby require 'rubygems' require 'bundler/setup' require 'celluloid/io' require 'benchmark/ips' #de TODO: Consolidate with Celluloid benchmarking actor. class BenchmarkingActor include Celluloid::IO def initialize @condition = Celluloid::Condition.new end def example_method; end def finished @condition.signal end def wait_until_finished @condition.wait end end example_actor = BenchmarkingActor.new mailbox = Celluloid::IO::Mailbox.new latch_in, latch_out = Queue.new, Queue.new latch = Thread.new do while true n = latch_in.pop for i in 0...n; mailbox.receive; end latch_out << :done end end Benchmark.ips do |ips| ips.report("spawn") { BenchmarkingActor.new.terminate } ips.report("calls") { example_actor.example_method } ips.report("async calls") do |n| waiter = example_actor.future.wait_until_finished for i in 1..n; example_actor.async.example_method; end example_actor.async.finished waiter.value end # Deadlocking o_O =begin ips.report("messages") do |n| latch_in << n for i in 0...n; mailbox << :message; end latch_out.pop end =end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
celluloid-io-0.17.3 | benchmarks/actor.rb |
celluloid-io-0.17.2 | benchmarks/actor.rb |