File: instantiability.rb

package info (click to toggle)
libneedle-ruby 1.2.0-2
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 1,436 kB
  • ctags: 886
  • sloc: ruby: 4,464; makefile: 52
file content (26 lines) | stat: -rw-r--r-- 693 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
$:.unshift "../lib"

require 'benchmark'
require 'needle'

ITERATIONS = 100_000

registry = Needle::Registry.new
registry.register( :deferred, :model=>:singleton_deferred ) { Struct.new( :value ).new( 1 ) }
registry.register( :immediate, :model=>:singleton ) { Struct.new( :value ).new( 1 ) }

deferred = registry.deferred
immediate = registry.immediate

puts
puts "--------------------------------------------------------------------"
puts "Proxied method dispatch vs. direct method dispatch"
puts "#{ITERATIONS} iterations"
puts

Benchmark.bm(7) do |x|
  x.report( "proxy:" ) { ITERATIONS.times { deferred.value } }
  x.report( "direct:" ) { ITERATIONS.times { immediate.value } }
end

puts