ruby-prof 0.11.0.rc1-x86-mingw32 → 0.11.0.rc2-x86-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. data/CHANGES +20 -5
  2. data/README.rdoc +10 -3
  3. data/ext/ruby_prof/rp_call_info.c +108 -79
  4. data/ext/ruby_prof/rp_call_info.h +1 -0
  5. data/ext/ruby_prof/rp_measure_cpu_time.c +111 -111
  6. data/ext/ruby_prof/rp_measure_gc_runs.c +1 -1
  7. data/ext/ruby_prof/rp_measure_memory.c +1 -1
  8. data/ext/ruby_prof/rp_measure_process_time.c +71 -71
  9. data/ext/ruby_prof/rp_measure_wall_time.c +1 -1
  10. data/ext/ruby_prof/rp_method.c +143 -73
  11. data/ext/ruby_prof/rp_method.h +7 -4
  12. data/ext/ruby_prof/rp_stack.c +16 -1
  13. data/ext/ruby_prof/rp_stack.h +4 -1
  14. data/ext/ruby_prof/rp_thread.c +165 -35
  15. data/ext/ruby_prof/rp_thread.h +8 -2
  16. data/ext/ruby_prof/ruby_prof.c +164 -171
  17. data/ext/ruby_prof/ruby_prof.h +53 -54
  18. data/ext/ruby_prof/vc/ruby_prof.sln +26 -0
  19. data/ext/ruby_prof/vc/ruby_prof.vcxproj +109 -0
  20. data/ext/ruby_prof/vc/ruby_prof_18.vcxproj +105 -0
  21. data/lib/1.8/ruby_prof.so +0 -0
  22. data/lib/1.9/ruby_prof.so +0 -0
  23. data/lib/ruby-prof/aggregate_call_info.rb +9 -7
  24. data/lib/ruby-prof/call_info.rb +2 -27
  25. data/lib/ruby-prof/call_info_visitor.rb +42 -0
  26. data/lib/ruby-prof/{empty.png → images/empty.png} +0 -0
  27. data/lib/ruby-prof/{minus.png → images/minus.png} +0 -0
  28. data/lib/ruby-prof/{plus.png → images/plus.png} +0 -0
  29. data/lib/ruby-prof/method_info.rb +13 -15
  30. data/lib/ruby-prof/{abstract_printer.rb → printers/abstract_printer.rb} +36 -2
  31. data/lib/ruby-prof/printers/call_info_printer.rb +40 -0
  32. data/lib/ruby-prof/{call_stack_printer.rb → printers/call_stack_printer.rb} +11 -16
  33. data/lib/ruby-prof/{call_tree_printer.rb → printers/call_tree_printer.rb} +4 -4
  34. data/lib/ruby-prof/{dot_printer.rb → printers/dot_printer.rb} +11 -31
  35. data/lib/ruby-prof/{flat_printer.rb → printers/flat_printer.rb} +26 -35
  36. data/lib/ruby-prof/{flat_printer_with_line_numbers.rb → printers/flat_printer_with_line_numbers.rb} +14 -25
  37. data/lib/ruby-prof/printers/graph_html_printer.rb +248 -0
  38. data/lib/ruby-prof/{graph_printer.rb → printers/graph_printer.rb} +31 -73
  39. data/lib/ruby-prof/{multi_printer.rb → printers/multi_printer.rb} +0 -0
  40. data/lib/ruby-prof/profile.rb +27 -22
  41. data/lib/ruby-prof/rack.rb +22 -12
  42. data/ruby-prof.gemspec +58 -0
  43. data/test/aggregate_test.rb +6 -6
  44. data/test/call_info_visitor_test.rb +31 -0
  45. data/test/duplicate_names_test.rb +1 -1
  46. data/test/dynamic_method_test.rb +1 -1
  47. data/test/enumerable_test.rb +1 -1
  48. data/test/exclude_threads_test.rb +2 -2
  49. data/test/gc_test.rb +35 -0
  50. data/test/line_number_test.rb +2 -2
  51. data/test/measure_cpu_time_test.rb +5 -5
  52. data/test/measure_process_time_test.rb +5 -5
  53. data/test/measure_wall_time_test.rb +5 -5
  54. data/test/method_elimination_test.rb +3 -3
  55. data/test/module_test.rb +1 -1
  56. data/test/no_method_class_test.rb +1 -1
  57. data/test/printers_test.rb +16 -8
  58. data/test/recursive_test.rb +115 -91
  59. data/test/stack_test.rb +1 -1
  60. data/test/start_stop_test.rb +13 -13
  61. data/test/summarize_test.rb +48 -0
  62. data/test/test_suite.rb +1 -0
  63. data/test/thread_test.rb +16 -12
  64. data/test/unique_call_path_test.rb +10 -10
  65. metadata +65 -85
  66. data/lib/1.9/ruby_prof.exp +0 -0
  67. data/lib/1.9/ruby_prof.ilk +0 -0
  68. data/lib/1.9/ruby_prof.lib +0 -0
  69. data/lib/1.9/ruby_prof.pdb +0 -0
  70. data/lib/ruby-prof.rb +0 -70
  71. data/lib/ruby-prof/graph_html_printer.rb +0 -286
  72. data/lib/ruby-prof/symbol_to_proc.rb +0 -10
  73. data/lib/ruby_prof.exp +0 -0
  74. data/lib/ruby_prof.ilk +0 -0
  75. data/lib/ruby_prof.lib +0 -0
  76. data/lib/ruby_prof.pdb +0 -0
  77. data/lib/ruby_prof.so +0 -0
  78. data/lib/unprof.rb +0 -10
  79. data/test/do_nothing.rb +0 -0
data/test/stack_test.rb CHANGED
@@ -46,7 +46,7 @@ class StackTest < Test::Unit::TestCase
46
46
  # StackClass#c
47
47
  # StackClass#b
48
48
 
49
- methods = result.threads.values.first.sort.reverse
49
+ methods = result.threads.first.methods.sort.reverse
50
50
  assert_equal(5, methods.length)
51
51
 
52
52
  # Check StackTest#test_call_sequence
@@ -53,7 +53,7 @@ class StartStopTest < Test::Unit::TestCase
53
53
  # StartStopTest#method3
54
54
  # Kernel#sleep
55
55
 
56
- methods = @result.threads.values.first.sort.reverse
56
+ methods = @result.threads.first.methods.sort.reverse
57
57
  assert_equal(4, methods.length)
58
58
 
59
59
  # Check StackTest#test_call_sequence
@@ -61,8 +61,8 @@ class StartStopTest < Test::Unit::TestCase
61
61
  assert_equal('StartStopTest#method1', method.full_name)
62
62
  assert_equal(1, method.called)
63
63
  assert_in_delta(2, method.total_time, 0.05)
64
- assert_in_delta(0, method.wait_time, 0.01)
65
- assert_in_delta(0, method.self_time, 0.01)
64
+ assert_in_delta(0, method.wait_time, 0.02)
65
+ assert_in_delta(0, method.self_time, 0.02)
66
66
  assert_in_delta(2, method.children_time, 0.05)
67
67
  assert_equal(1, method.call_infos.length)
68
68
 
@@ -74,8 +74,8 @@ class StartStopTest < Test::Unit::TestCase
74
74
  assert_equal('StartStopTest#method2', method.full_name)
75
75
  assert_equal(1, method.called)
76
76
  assert_in_delta(2, method.total_time, 0.05)
77
- assert_in_delta(0, method.wait_time, 0.01)
78
- assert_in_delta(0, method.self_time, 0.01)
77
+ assert_in_delta(0, method.wait_time, 0.02)
78
+ assert_in_delta(0, method.self_time, 0.02)
79
79
  assert_in_delta(2, method.children_time, 0.05)
80
80
  assert_equal(1, method.call_infos.length)
81
81
 
@@ -86,10 +86,10 @@ class StartStopTest < Test::Unit::TestCase
86
86
  method = methods[2]
87
87
  assert_equal('StartStopTest#method3', method.full_name)
88
88
  assert_equal(1, method.called)
89
- assert_in_delta(2, method.total_time, 0.01)
90
- assert_in_delta(0, method.wait_time, 0.01)
91
- assert_in_delta(0, method.self_time, 0.01)
92
- assert_in_delta(2, method.children_time, 0.01)
89
+ assert_in_delta(2, method.total_time, 0.02)
90
+ assert_in_delta(0, method.wait_time, 0.02)
91
+ assert_in_delta(0, method.self_time, 0.02)
92
+ assert_in_delta(2, method.children_time, 0.02)
93
93
  assert_equal(1, method.call_infos.length)
94
94
 
95
95
  call_info = method.call_infos[0]
@@ -99,10 +99,10 @@ class StartStopTest < Test::Unit::TestCase
99
99
  method = methods[3]
100
100
  assert_equal('Kernel#sleep', method.full_name)
101
101
  assert_equal(1, method.called)
102
- assert_in_delta(2, method.total_time, 0.01)
103
- assert_in_delta(0, method.wait_time, 0.01)
104
- assert_in_delta(2, method.self_time, 0.01)
105
- assert_in_delta(0, method.children_time, 0.01)
102
+ assert_in_delta(2, method.total_time, 0.02)
103
+ assert_in_delta(0, method.wait_time, 0.02)
104
+ assert_in_delta(2, method.self_time, 0.02)
105
+ assert_in_delta(0, method.children_time, 0.02)
106
106
  assert_equal(1, method.call_infos.length)
107
107
 
108
108
  call_info = method.call_infos[0]
@@ -0,0 +1,48 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+
4
+ require File.expand_path('../test_helper', __FILE__)
5
+
6
+ def slow
7
+ sleep(3)
8
+ end
9
+
10
+ def fast
11
+ sleep(3)
12
+ end
13
+
14
+ def slow_caller
15
+ 1.times do
16
+ slow
17
+ end
18
+ end
19
+
20
+ def fast_caller
21
+ 1.times do
22
+ fast
23
+ end
24
+ end
25
+
26
+ def parent
27
+ [1..10].each do
28
+ #slow_caller
29
+ fast_caller
30
+ end
31
+ end
32
+
33
+ class SummarizeTest < Test::Unit::TestCase
34
+ def setup
35
+ # Need to use wall time for this test due to the sleep calls
36
+ RubyProf::measure_mode = RubyProf::WALL_TIME
37
+ end
38
+
39
+ def test
40
+ result = RubyProf::Profile.profile do
41
+ parent
42
+ end
43
+
44
+ printer = RubyProf::GraphPrinter.new(result)
45
+ printer.print(STDOUT)
46
+
47
+ end
48
+ end
data/test/test_suite.rb CHANGED
@@ -4,6 +4,7 @@ require File.expand_path("../test_helper", __FILE__)
4
4
 
5
5
  %w(aggregate_test
6
6
  basic_test
7
+ call_info_visitor_test
7
8
  duplicate_names_test
8
9
  dynamic_method_test
9
10
  enumerable_test
data/test/thread_test.rb CHANGED
@@ -20,7 +20,7 @@ class ThreadTest < Test::Unit::TestCase
20
20
 
21
21
  thread.join
22
22
  result = RubyProf.stop
23
- assert_equal(2, result.threads.keys.length) # this should pass...
23
+ assert_equal(2, result.threads.length)
24
24
  end
25
25
 
26
26
  def test_thread_identity
@@ -31,9 +31,9 @@ class ThreadTest < Test::Unit::TestCase
31
31
  thread.join
32
32
  result = RubyProf.stop
33
33
 
34
- thread_ids = result.threads.keys.sort
34
+ thread_ids = result.threads.map {|thread| thread.id}.sort
35
35
  threads = [Thread.current, thread]
36
- assert_equal(2, thread_ids.length) # should pass
36
+ assert_equal(2, result.threads.length)
37
37
 
38
38
  assert(thread_ids.include?(threads[0].object_id))
39
39
  assert(thread_ids.include?(threads[1].object_id))
@@ -59,7 +59,9 @@ class ThreadTest < Test::Unit::TestCase
59
59
 
60
60
  # Check background thread
61
61
  assert_equal(2, result.threads.length)
62
- methods = result.threads[thread.object_id].sort.reverse
62
+
63
+ rp_thread = result.threads.detect {|athread| athread.id == thread.object_id}
64
+ methods = rp_thread.methods.sort.reverse
63
65
  assert_equal(2, methods.length)
64
66
 
65
67
  method = methods[0]
@@ -88,7 +90,8 @@ class ThreadTest < Test::Unit::TestCase
88
90
  assert_equal(0, call_info.children.length)
89
91
 
90
92
  # Check foreground thread
91
- methods = result.threads[Thread.current.object_id].sort.reverse
93
+ rp_thread = result.threads.detect {|athread| athread.id == Thread.current.object_id}
94
+ methods = rp_thread.methods.sort.reverse
92
95
  assert_equal(4, methods.length)
93
96
  methods = methods.sort.reverse
94
97
 
@@ -150,13 +153,14 @@ class ThreadTest < Test::Unit::TestCase
150
153
 
151
154
  # useless test
152
155
  def test_thread_back_and_forth
153
- result = RubyProf.profile do
154
- a = Thread.new { 100_000.times { sleep 0 }}
155
- b = Thread.new { 100_000.times { sleep 0 }}
156
- a.join
157
- b.join
158
- end
159
- assert result.threads.values.flatten.sort[-1].total_time < 10 # 10s. Amazingly, this can fail in OS X at times. Amazing.
156
+ result = RubyProf.profile do
157
+ a = Thread.new { 100_000.times { sleep 0 }}
158
+ b = Thread.new { 100_000.times { sleep 0 }}
159
+ a.join
160
+ b.join
161
+ end
162
+ methods = result.threads.map {|thread| thread.methods}
163
+ assert(methods.flatten.sort[-1].total_time < 10) # 10s. Amazingly, this can fail in OS X at times. Amazing.
160
164
  end
161
165
 
162
166
  def test_thread
@@ -36,8 +36,8 @@ class UniqueCallPathTest < Test::Unit::TestCase
36
36
  end
37
37
 
38
38
  root_methods = Array.new
39
- result.threads.each do | thread_id, methods |
40
- methods.each do | m |
39
+ result.threads.each do |thread|
40
+ thread.methods.each do | m |
41
41
  if m.root?
42
42
  root_methods.push(m)
43
43
  end
@@ -57,8 +57,8 @@ class UniqueCallPathTest < Test::Unit::TestCase
57
57
  end
58
58
 
59
59
  root_methods = Array.new
60
- result.threads.each do | thread_id, methods |
61
- methods.each do | m |
60
+ result.threads.each do |thread|
61
+ thread.methods.each do | m |
62
62
  if m.root?
63
63
  root_methods.push(m)
64
64
  end
@@ -92,8 +92,8 @@ class UniqueCallPathTest < Test::Unit::TestCase
92
92
  end
93
93
 
94
94
  root_methods = Array.new
95
- result.threads.each do | thread_id, methods |
96
- methods.each do | m |
95
+ result.threads.each do |thread|
96
+ thread.methods.each do | m |
97
97
  if m.root?
98
98
  root_methods.push(m)
99
99
  end
@@ -150,8 +150,8 @@ class UniqueCallPathTest < Test::Unit::TestCase
150
150
  end
151
151
 
152
152
  root_methods = Array.new
153
- result.threads.each do | thread_id, methods |
154
- methods.each do | m |
153
+ result.threads.each do |thread|
154
+ thread.methods.each do | m |
155
155
  if m.root?
156
156
  root_methods.push(m)
157
157
  end
@@ -173,8 +173,8 @@ class UniqueCallPathTest < Test::Unit::TestCase
173
173
  end
174
174
 
175
175
  root_methods = Array.new
176
- result.threads.each do | thread_id, methods |
177
- methods.each do | m |
176
+ result.threads.each do |thread|
177
+ thread.methods.each do | m |
178
178
  if m.root?
179
179
  root_methods.push(m)
180
180
  end
metadata CHANGED
@@ -1,58 +1,56 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ruby-prof
3
- version: !ruby/object:Gem::Version
4
- hash: 15424167
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.11.0.rc2
5
5
  prerelease: 7
6
- segments:
7
- - 0
8
- - 11
9
- - 0
10
- - rc
11
- - 1
12
- version: 0.11.0.rc1
13
6
  platform: x86-mingw32
14
- authors:
7
+ authors:
15
8
  - Shugo Maeda, Charlie Savage, Roger Pack, Stefan Kaes
16
9
  autorequire:
17
10
  bindir: bin
18
11
  cert_chain: []
19
-
20
- date: 2012-03-24 00:00:00 Z
21
- dependencies:
22
- - !ruby/object:Gem::Dependency
12
+ date: 2012-03-26 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
23
15
  name: rake-compiler
24
- prerelease: false
25
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
26
17
  none: false
27
- requirements:
28
- - - ">="
29
- - !ruby/object:Gem::Version
30
- hash: 3
31
- segments:
32
- - 0
33
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
34
22
  type: :development
35
- version_requirements: *id001
36
- description: |
37
- ruby-prof is a fast code profiler for Ruby. It is a C extension and
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ description: ! 'ruby-prof is a fast code profiler for Ruby. It is a C extension and
31
+
38
32
  therefore is many times faster than the standard Ruby profiler. It
33
+
39
34
  supports both flat and graph profiles. For each method, graph profiles
35
+
40
36
  show how long the method ran, which methods called it and which
37
+
41
38
  methods it called. RubyProf generate both text and html and can output
39
+
42
40
  it to standard out or to a file.
43
41
 
42
+ '
44
43
  email: shugo@ruby-lang.org, cfis@savagexi.com, rogerdpack@gmail.com, skaes@railsexpress.de
45
- executables:
44
+ executables:
46
45
  - ruby-prof
47
46
  extensions: []
48
-
49
47
  extra_rdoc_files: []
50
-
51
- files:
48
+ files:
49
+ - CHANGES
50
+ - LICENSE
52
51
  - Rakefile
53
52
  - README.rdoc
54
- - LICENSE
55
- - CHANGES
53
+ - ruby-prof.gemspec
56
54
  - bin/ruby-prof
57
55
  - examples/empty.png
58
56
  - examples/flat.txt
@@ -67,6 +65,7 @@ files:
67
65
  - examples/multi.stack.html
68
66
  - examples/plus.png
69
67
  - examples/stack.html
68
+ - ext/ruby_prof/extconf.rb
70
69
  - ext/ruby_prof/rp_call_info.c
71
70
  - ext/ruby_prof/rp_measure.c
72
71
  - ext/ruby_prof/rp_measure_allocations.c
@@ -87,50 +86,42 @@ files:
87
86
  - ext/ruby_prof/rp_thread.h
88
87
  - ext/ruby_prof/ruby_prof.h
89
88
  - ext/ruby_prof/version.h
90
- - lib/1.8/ruby_prof.so
91
- - lib/1.9/ruby_prof.exp
92
- - lib/1.9/ruby_prof.ilk
93
- - lib/1.9/ruby_prof.lib
94
- - lib/1.9/ruby_prof.pdb
95
- - lib/1.9/ruby_prof.so
96
- - lib/ruby-prof/abstract_printer.rb
89
+ - ext/ruby_prof/vc/ruby_prof.sln
90
+ - ext/ruby_prof/vc/ruby_prof.vcxproj
91
+ - ext/ruby_prof/vc/ruby_prof_18.vcxproj
97
92
  - lib/ruby-prof/aggregate_call_info.rb
98
93
  - lib/ruby-prof/call_info.rb
99
- - lib/ruby-prof/call_stack_printer.rb
100
- - lib/ruby-prof/call_tree_printer.rb
94
+ - lib/ruby-prof/call_info_visitor.rb
101
95
  - lib/ruby-prof/compatibility.rb
102
- - lib/ruby-prof/dot_printer.rb
103
- - lib/ruby-prof/empty.png
104
- - lib/ruby-prof/flat_printer.rb
105
- - lib/ruby-prof/flat_printer_with_line_numbers.rb
106
- - lib/ruby-prof/graph_html_printer.rb
107
- - lib/ruby-prof/graph_printer.rb
108
96
  - lib/ruby-prof/method_info.rb
109
- - lib/ruby-prof/minus.png
110
- - lib/ruby-prof/multi_printer.rb
111
- - lib/ruby-prof/plus.png
112
97
  - lib/ruby-prof/profile.rb
113
98
  - lib/ruby-prof/rack.rb
114
- - lib/ruby-prof/symbol_to_proc.rb
115
99
  - lib/ruby-prof/task.rb
116
100
  - lib/ruby-prof/test.rb
117
- - lib/ruby-prof.rb
118
- - lib/ruby_prof.exp
119
- - lib/ruby_prof.ilk
120
- - lib/ruby_prof.lib
121
- - lib/ruby_prof.pdb
122
- - lib/ruby_prof.so
123
- - lib/unprof.rb
101
+ - lib/ruby-prof/images/empty.png
102
+ - lib/ruby-prof/images/minus.png
103
+ - lib/ruby-prof/images/plus.png
104
+ - lib/ruby-prof/printers/abstract_printer.rb
105
+ - lib/ruby-prof/printers/call_info_printer.rb
106
+ - lib/ruby-prof/printers/call_stack_printer.rb
107
+ - lib/ruby-prof/printers/call_tree_printer.rb
108
+ - lib/ruby-prof/printers/dot_printer.rb
109
+ - lib/ruby-prof/printers/flat_printer.rb
110
+ - lib/ruby-prof/printers/flat_printer_with_line_numbers.rb
111
+ - lib/ruby-prof/printers/graph_html_printer.rb
112
+ - lib/ruby-prof/printers/graph_printer.rb
113
+ - lib/ruby-prof/printers/multi_printer.rb
124
114
  - test/aggregate_test.rb
125
115
  - test/basic_test.rb
126
116
  - test/bug_test.rb
127
- - test/do_nothing.rb
117
+ - test/call_info_visitor_test.rb
128
118
  - test/duplicate_names_test.rb
129
119
  - test/dynamic_method_test.rb
130
120
  - test/enumerable_test.rb
131
121
  - test/exceptions_test.rb
132
122
  - test/exclude_threads_test.rb
133
123
  - test/exec_test.rb
124
+ - test/gc_test.rb
134
125
  - test/line_number_test.rb
135
126
  - test/measure_allocations_test.rb
136
127
  - test/measure_cpu_time_test.rb
@@ -151,48 +142,37 @@ files:
151
142
  - test/stack_printer_test.rb
152
143
  - test/stack_test.rb
153
144
  - test/start_stop_test.rb
145
+ - test/summarize_test.rb
154
146
  - test/test_helper.rb
155
147
  - test/test_suite.rb
156
148
  - test/thread_test.rb
157
149
  - test/unique_call_path_test.rb
158
- - ext/ruby_prof/extconf.rb
150
+ - lib/1.8/ruby_prof.so
151
+ - lib/1.9/ruby_prof.so
159
152
  homepage: https://github.com/rdp/ruby-prof
160
153
  licenses: []
161
-
162
154
  post_install_message:
163
155
  rdoc_options: []
164
-
165
- require_paths:
156
+ require_paths:
166
157
  - lib
167
- required_ruby_version: !ruby/object:Gem::Requirement
158
+ required_ruby_version: !ruby/object:Gem::Requirement
168
159
  none: false
169
- requirements:
170
- - - ">="
171
- - !ruby/object:Gem::Version
172
- hash: 57
173
- segments:
174
- - 1
175
- - 8
176
- - 7
160
+ requirements:
161
+ - - ! '>='
162
+ - !ruby/object:Gem::Version
177
163
  version: 1.8.7
178
- required_rubygems_version: !ruby/object:Gem::Requirement
164
+ required_rubygems_version: !ruby/object:Gem::Requirement
179
165
  none: false
180
- requirements:
181
- - - ">"
182
- - !ruby/object:Gem::Version
183
- hash: 25
184
- segments:
185
- - 1
186
- - 3
187
- - 1
166
+ requirements:
167
+ - - ! '>'
168
+ - !ruby/object:Gem::Version
188
169
  version: 1.3.1
189
170
  requirements: []
190
-
191
171
  rubyforge_project:
192
- rubygems_version: 1.8.10
172
+ rubygems_version: 1.8.21
193
173
  signing_key:
194
174
  specification_version: 3
195
175
  summary: Fast Ruby profiler
196
- test_files:
176
+ test_files:
197
177
  - test/test_helper.rb
198
178
  - test/test_suite.rb