File: bench_return.rb

package info (click to toggle)
ruby-facets 2.9.2-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 9,824 kB
  • sloc: ruby: 25,483; xml: 90; makefile: 20
file content (56 lines) | stat: -rw-r--r-- 1,047 bytes parent folder | download
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
51
52
53
54
55
56

  require 'benchmark'

  class Ret
    def initialize(a,b,c,d,e)
      @a = a
      @b = b
      @c = c
      @d = d
      @e = e
    end
  end

  @preobj = Object.new
  def @preobj.assign(a,b,c,d,e)
    @a = a
    @b = b
    @c = c
    @d = d
    @e = e
  end
  
  def return_list
    return 1, 2, 3, 4, 5
  end

  def return_array
    return [1, 2, 3, 4, 5]
  end

  def return_hash
    return { 1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5 }
  end

  def return_object
    return Ret.new(1, 2, 3, 4, 5)
  end

  def return_preobj
    return @preobj.assign(1, 2, 3, 4, 5)
  end

  def return_globals
    $a = 1; $b = 2; $c = 3; $d = 4; $e = 5
  end

  n = 50000
  Benchmark.bm(7) do |x|
    x.report("global") { n.times do ; return_globals ; end }
    x.report("preobj") { n.times do ; return_preobj ; end }
    x.report("object") { n.times do ; return_object ; end }
    x.report("array:") { n.times do ; return_array ; end }
    x.report("hash:")  { n.times do ; return_hash ; end }
    x.report("list:")  { n.times do ; return_list ; end }
  end