ruby-prof 0.11.0.rc1 → 0.11.0.rc2

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/ruby-prof/aggregate_call_info.rb +9 -7
  22. data/lib/ruby-prof/call_info.rb +2 -27
  23. data/lib/ruby-prof/call_info_visitor.rb +42 -0
  24. data/lib/ruby-prof/{empty.png → images/empty.png} +0 -0
  25. data/lib/ruby-prof/{minus.png → images/minus.png} +0 -0
  26. data/lib/ruby-prof/{plus.png → images/plus.png} +0 -0
  27. data/lib/ruby-prof/method_info.rb +13 -15
  28. data/lib/ruby-prof/{abstract_printer.rb → printers/abstract_printer.rb} +36 -2
  29. data/lib/ruby-prof/printers/call_info_printer.rb +40 -0
  30. data/lib/ruby-prof/{call_stack_printer.rb → printers/call_stack_printer.rb} +11 -16
  31. data/lib/ruby-prof/{call_tree_printer.rb → printers/call_tree_printer.rb} +4 -4
  32. data/lib/ruby-prof/{dot_printer.rb → printers/dot_printer.rb} +11 -31
  33. data/lib/ruby-prof/{flat_printer.rb → printers/flat_printer.rb} +26 -35
  34. data/lib/ruby-prof/{flat_printer_with_line_numbers.rb → printers/flat_printer_with_line_numbers.rb} +14 -25
  35. data/lib/ruby-prof/printers/graph_html_printer.rb +248 -0
  36. data/lib/ruby-prof/{graph_printer.rb → printers/graph_printer.rb} +31 -73
  37. data/lib/ruby-prof/{multi_printer.rb → printers/multi_printer.rb} +0 -0
  38. data/lib/ruby-prof/profile.rb +27 -22
  39. data/lib/ruby-prof/rack.rb +22 -12
  40. data/ruby-prof.gemspec +58 -0
  41. data/test/aggregate_test.rb +6 -6
  42. data/test/call_info_visitor_test.rb +31 -0
  43. data/test/duplicate_names_test.rb +1 -1
  44. data/test/dynamic_method_test.rb +1 -1
  45. data/test/enumerable_test.rb +1 -1
  46. data/test/exclude_threads_test.rb +2 -2
  47. data/test/gc_test.rb +35 -0
  48. data/test/line_number_test.rb +2 -2
  49. data/test/measure_cpu_time_test.rb +5 -5
  50. data/test/measure_process_time_test.rb +5 -5
  51. data/test/measure_wall_time_test.rb +5 -5
  52. data/test/method_elimination_test.rb +3 -3
  53. data/test/module_test.rb +1 -1
  54. data/test/no_method_class_test.rb +1 -1
  55. data/test/printers_test.rb +16 -8
  56. data/test/recursive_test.rb +115 -91
  57. data/test/stack_test.rb +1 -1
  58. data/test/start_stop_test.rb +13 -13
  59. data/test/summarize_test.rb +48 -0
  60. data/test/test_suite.rb +1 -0
  61. data/test/thread_test.rb +16 -12
  62. data/test/unique_call_path_test.rb +10 -10
  63. metadata +64 -85
  64. data/lib/1.8/ruby_prof.so +0 -0
  65. data/lib/1.9/ruby_prof.exp +0 -0
  66. data/lib/1.9/ruby_prof.ilk +0 -0
  67. data/lib/1.9/ruby_prof.lib +0 -0
  68. data/lib/1.9/ruby_prof.pdb +0 -0
  69. data/lib/1.9/ruby_prof.so +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,57 @@
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: ruby
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
- extensions:
46
+ extensions:
48
47
  - ext/ruby_prof/extconf.rb
49
48
  extra_rdoc_files: []
50
-
51
- files:
49
+ files:
50
+ - CHANGES
51
+ - LICENSE
52
52
  - Rakefile
53
53
  - README.rdoc
54
- - LICENSE
55
- - CHANGES
54
+ - ruby-prof.gemspec
56
55
  - bin/ruby-prof
57
56
  - examples/empty.png
58
57
  - examples/flat.txt
@@ -67,6 +66,7 @@ files:
67
66
  - examples/multi.stack.html
68
67
  - examples/plus.png
69
68
  - examples/stack.html
69
+ - ext/ruby_prof/extconf.rb
70
70
  - ext/ruby_prof/rp_call_info.c
71
71
  - ext/ruby_prof/rp_measure.c
72
72
  - ext/ruby_prof/rp_measure_allocations.c
@@ -87,50 +87,42 @@ files:
87
87
  - ext/ruby_prof/rp_thread.h
88
88
  - ext/ruby_prof/ruby_prof.h
89
89
  - 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
90
+ - ext/ruby_prof/vc/ruby_prof.sln
91
+ - ext/ruby_prof/vc/ruby_prof.vcxproj
92
+ - ext/ruby_prof/vc/ruby_prof_18.vcxproj
97
93
  - lib/ruby-prof/aggregate_call_info.rb
98
94
  - lib/ruby-prof/call_info.rb
99
- - lib/ruby-prof/call_stack_printer.rb
100
- - lib/ruby-prof/call_tree_printer.rb
95
+ - lib/ruby-prof/call_info_visitor.rb
101
96
  - 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
97
  - 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
98
  - lib/ruby-prof/profile.rb
113
99
  - lib/ruby-prof/rack.rb
114
- - lib/ruby-prof/symbol_to_proc.rb
115
100
  - lib/ruby-prof/task.rb
116
101
  - 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
102
+ - lib/ruby-prof/images/empty.png
103
+ - lib/ruby-prof/images/minus.png
104
+ - lib/ruby-prof/images/plus.png
105
+ - lib/ruby-prof/printers/abstract_printer.rb
106
+ - lib/ruby-prof/printers/call_info_printer.rb
107
+ - lib/ruby-prof/printers/call_stack_printer.rb
108
+ - lib/ruby-prof/printers/call_tree_printer.rb
109
+ - lib/ruby-prof/printers/dot_printer.rb
110
+ - lib/ruby-prof/printers/flat_printer.rb
111
+ - lib/ruby-prof/printers/flat_printer_with_line_numbers.rb
112
+ - lib/ruby-prof/printers/graph_html_printer.rb
113
+ - lib/ruby-prof/printers/graph_printer.rb
114
+ - lib/ruby-prof/printers/multi_printer.rb
124
115
  - test/aggregate_test.rb
125
116
  - test/basic_test.rb
126
117
  - test/bug_test.rb
127
- - test/do_nothing.rb
118
+ - test/call_info_visitor_test.rb
128
119
  - test/duplicate_names_test.rb
129
120
  - test/dynamic_method_test.rb
130
121
  - test/enumerable_test.rb
131
122
  - test/exceptions_test.rb
132
123
  - test/exclude_threads_test.rb
133
124
  - test/exec_test.rb
125
+ - test/gc_test.rb
134
126
  - test/line_number_test.rb
135
127
  - test/measure_allocations_test.rb
136
128
  - test/measure_cpu_time_test.rb
@@ -151,48 +143,35 @@ files:
151
143
  - test/stack_printer_test.rb
152
144
  - test/stack_test.rb
153
145
  - test/start_stop_test.rb
146
+ - test/summarize_test.rb
154
147
  - test/test_helper.rb
155
148
  - test/test_suite.rb
156
149
  - test/thread_test.rb
157
150
  - test/unique_call_path_test.rb
158
- - ext/ruby_prof/extconf.rb
159
151
  homepage: https://github.com/rdp/ruby-prof
160
152
  licenses: []
161
-
162
153
  post_install_message:
163
154
  rdoc_options: []
164
-
165
- require_paths:
155
+ require_paths:
166
156
  - lib
167
- required_ruby_version: !ruby/object:Gem::Requirement
157
+ required_ruby_version: !ruby/object:Gem::Requirement
168
158
  none: false
169
- requirements:
170
- - - ">="
171
- - !ruby/object:Gem::Version
172
- hash: 57
173
- segments:
174
- - 1
175
- - 8
176
- - 7
159
+ requirements:
160
+ - - ! '>='
161
+ - !ruby/object:Gem::Version
177
162
  version: 1.8.7
178
- required_rubygems_version: !ruby/object:Gem::Requirement
163
+ required_rubygems_version: !ruby/object:Gem::Requirement
179
164
  none: false
180
- requirements:
181
- - - ">"
182
- - !ruby/object:Gem::Version
183
- hash: 25
184
- segments:
185
- - 1
186
- - 3
187
- - 1
165
+ requirements:
166
+ - - ! '>'
167
+ - !ruby/object:Gem::Version
188
168
  version: 1.3.1
189
169
  requirements: []
190
-
191
170
  rubyforge_project:
192
- rubygems_version: 1.8.10
171
+ rubygems_version: 1.8.21
193
172
  signing_key:
194
173
  specification_version: 3
195
174
  summary: Fast Ruby profiler
196
- test_files:
175
+ test_files:
197
176
  - test/test_helper.rb
198
177
  - test/test_suite.rb