Skip to content

Instantly share code, notes, and snippets.

@tarcieri
Created September 28, 2011 06:32
Show Gist options
  • Select an option

  • Save tarcieri/1247145 to your computer and use it in GitHub Desktop.

Select an option

Save tarcieri/1247145 to your computer and use it in GitHub Desktop.
>> require 'benchmark'
=> true
>> require 'celluloid'
=> true
>> class ScarlettJohannson
.. include Celluloid
..
.. attr_reader :leaked_photos_on_internet
..
.. def initialize
.. @leaked_photos_on_internet = 0
.. end
..
.. def oops(n = 1)
.. drink_some_booze
.. fumble_around_with_phone
.. @leaked_photos_on_internet += n
.. end
..
.. def drink_some_booze; sleep 4; end
.. def fumble_around_with_phone; sleep 1; end
.. end
=> nil
>> scarlets = (1..10).map { ScarlettJohannson.new }
=> [#<Celluloid::Actor(ScarlettJohannson:0x8143db50) @leaked_photos_on_internet=0>, #<Celluloid::Actor(ScarlettJohannson:0x8143d830) @leaked_photos_on_internet=0>, #<Celluloid::Actor(ScarlettJohannson:0x8143d588) @leaked_photos_on_internet=0>, #<Celluloid::Actor(ScarlettJohannson:0x8143d2e0) @leaked_photos_on_internet=0>, #<Celluloid::Actor(ScarlettJohannson:0x8143d038) @leaked_photos_on_internet=0>, #<Celluloid::Actor(ScarlettJohannson:0x804e6378) @leaked_photos_on_internet=0>, #<Celluloid::Actor(ScarlettJohannson:0x81013ffc) @leaked_photos_on_internet=0>, #<Celluloid::Actor(ScarlettJohannson:0x8102c41c) @leaked_photos_on_internet=0>, #<Celluloid::Actor(ScarlettJohannson:0x810450e8) @leaked_photos_on_internet=0>, #<Celluloid::Actor(ScarlettJohannson:0x8143d09c) @leaked_photos_on_internet=0>]
>> puts Benchmark.measure { indiscretions = scarlets.map { |actor| actor.future(:oops, 2) }; p indiscretions.map { |future| future.value } }
=> [2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
0.020000 0.010000 0.030000 ( 5.012800)
@jsmestad
Copy link

hahaha

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment