File: class_vs_lambda.rb

package info (click to toggle)
ruby-excon 0.112.0-4
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 1,232 kB
  • sloc: ruby: 7,855; makefile: 5
file content (50 lines) | stat: -rw-r--r-- 896 bytes parent folder | download | duplicates (7)
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
require 'rubygems'
require 'tach'

class Concatenator
  def initialize(string)
    @string = string
  end

  def call(data)
    @string << data
  end
end

string = "0123456789ABCDEF"

Tach.meter(100_000) do
  tach('class') do
    s = ""
    obj = Concatenator.new(s)
    10.times { obj.call(string) }
  end

  tach('lambda') do
    s = ""
    obj = lambda {|data| s << data }
    10.times { obj.call(string) }
  end
end

# ruby 1.9.2p136 (2010-12-25 revision 30365) [x86_64-linux]
#
#  +--------+----------+
#  | tach   | total    |
#  +--------+----------+
#  | class  | 1.450284 |
#  +--------+----------+
#  | lambda | 2.506496 |
#  +--------+----------+

# ruby 1.8.7 (2010-12-23 patchlevel 330) [x86_64-linux]
#
#  +--------+----------+
#  | tach   | total    |
#  +--------+----------+
#  | class  | 1.373917 |
#  +--------+----------+
#  | lambda | 2.589384 |
#  +--------+----------+