ruby-prof 0.7.0-x86-mswin32-60 → 0.7.1-x86-mswin32-60
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +21 -0
- data/README +3 -1
- data/Rakefile +1 -1
- data/ext/measure_cpu_time.h +2 -2
- data/ext/mingw/Rakefile +1 -1
- data/ext/mingw/ruby_prof.so +0 -0
- data/ext/version.h +2 -2
- data/lib/ruby-prof.rb +1 -0
- data/lib/ruby-prof/abstract_printer.rb +0 -1
- data/lib/ruby-prof/aggregate_call_info.rb +62 -0
- data/lib/ruby-prof/call_info.rb +1 -1
- data/lib/ruby-prof/graph_html_printer.rb +2 -2
- data/lib/ruby-prof/graph_printer.rb +2 -2
- data/lib/ruby-prof/group_by.rb +10 -0
- data/lib/ruby-prof/method_info.rb +30 -8
- data/rails/example/example_test.rb.html +14 -0
- data/test/aggregate_test.rb +121 -0
- data/test/stack_test.rb +19 -19
- data/test/test_suite.rb +1 -1
- metadata +7 -4
- data/test/profile_unit_test.rb +0 -22
data/CHANGES
CHANGED
@@ -1,3 +1,24 @@
|
|
1
|
+
0.7.1 (2008-11-28)
|
2
|
+
========================
|
3
|
+
* Added new AggregateCallInfo class for printers to
|
4
|
+
make results easier to read. Take this call sequence
|
5
|
+
for example:
|
6
|
+
|
7
|
+
A B C
|
8
|
+
| | |
|
9
|
+
Z A A
|
10
|
+
| |
|
11
|
+
Z Z
|
12
|
+
|
13
|
+
By default, ruby-prof will show that Z was called by 3 separate
|
14
|
+
instances of A. In an IDE that is helpful but in a text report
|
15
|
+
it is not since it makes the report much harder to read.
|
16
|
+
As a result, printers now aggregate together callers (and children),
|
17
|
+
matching ruby-prof's output from versions prior to 0.7.0.
|
18
|
+
|
19
|
+
* Fixes for supporting x86_64 machines (Matt Sanford)
|
20
|
+
|
21
|
+
|
1
22
|
0.7.0 (2008-11-04)
|
2
23
|
========================
|
3
24
|
|
data/README
CHANGED
@@ -33,7 +33,9 @@ The easiest way to install ruby-prof is by using Ruby Gems. To install:
|
|
33
33
|
<tt>gem install ruby-prof</tt>
|
34
34
|
|
35
35
|
If you are running Windows, make sure to install the Win32 RubyGem which
|
36
|
-
includes a pre-built binary.
|
36
|
+
includes a pre-built binary. Due to a bug in ruby-gems, you cannot
|
37
|
+
install the gem to a path that contains spaces
|
38
|
+
(see http://rubyforge.org/tracker/?func=detail&aid=23003&group_id=126&atid=577).
|
37
39
|
|
38
40
|
ruby-prof is also available as a tarred gzip archive and zip archive.
|
39
41
|
|
data/Rakefile
CHANGED
@@ -117,7 +117,7 @@ task :default => :package
|
|
117
117
|
desc 'Run the ruby-prof test suite'
|
118
118
|
Rake::TestTask.new do |t|
|
119
119
|
t.libs += %w(lib ext test)
|
120
|
-
t.test_files = Dir['test
|
120
|
+
t.test_files = Dir['test/test_suite.rb']
|
121
121
|
t.verbose = true
|
122
122
|
t.warning = true
|
123
123
|
end
|
data/ext/measure_cpu_time.h
CHANGED
@@ -26,7 +26,7 @@
|
|
26
26
|
|
27
27
|
#include <ruby.h>
|
28
28
|
|
29
|
-
#if defined(_WIN32) || (defined(__GNUC__) && (defined(__i386__) || defined(__powerpc__) || defined(__ppc__)))
|
29
|
+
#if defined(_WIN32) || (defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__) || defined(__powerpc__) || defined(__ppc__)))
|
30
30
|
#define MEASURE_CPU_TIME 2
|
31
31
|
|
32
32
|
static unsigned long long cpu_frequency;
|
@@ -36,7 +36,7 @@ static unsigned long long cpu_frequency;
|
|
36
36
|
static prof_measure_t
|
37
37
|
measure_cpu_time()
|
38
38
|
{
|
39
|
-
#if defined(__i386__)
|
39
|
+
#if defined(__i386__) || defined(__x86_64__)
|
40
40
|
unsigned long long x;
|
41
41
|
__asm__ __volatile__ ("rdtsc" : "=A" (x));
|
42
42
|
return x;
|
data/ext/mingw/Rakefile
CHANGED
data/ext/mingw/ruby_prof.so
CHANGED
Binary file
|
data/ext/version.h
CHANGED
data/lib/ruby-prof.rb
CHANGED
@@ -0,0 +1,62 @@
|
|
1
|
+
module RubyProf
|
2
|
+
class AggregateCallInfo
|
3
|
+
attr_reader :call_infos
|
4
|
+
def initialize(call_infos)
|
5
|
+
if call_infos.length == 0
|
6
|
+
raise(ArgumentError, "Must specify at least one call info.")
|
7
|
+
end
|
8
|
+
@call_infos = call_infos
|
9
|
+
end
|
10
|
+
|
11
|
+
def target
|
12
|
+
call_infos.first.target
|
13
|
+
end
|
14
|
+
|
15
|
+
def parent
|
16
|
+
call_infos.first.parent
|
17
|
+
end
|
18
|
+
|
19
|
+
def line
|
20
|
+
call_infos.first.line
|
21
|
+
end
|
22
|
+
|
23
|
+
def children
|
24
|
+
call_infos.inject(Array.new) do |result, call_info|
|
25
|
+
result.concat(call_info.children)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def total_time
|
30
|
+
aggregate(:total_time)
|
31
|
+
end
|
32
|
+
|
33
|
+
def self_time
|
34
|
+
aggregate(:self_time)
|
35
|
+
end
|
36
|
+
|
37
|
+
def wait_time
|
38
|
+
aggregate(:wait_time)
|
39
|
+
end
|
40
|
+
|
41
|
+
def children_time
|
42
|
+
aggregate(:children_time)
|
43
|
+
end
|
44
|
+
|
45
|
+
def called
|
46
|
+
aggregate(:called)
|
47
|
+
end
|
48
|
+
|
49
|
+
def to_s
|
50
|
+
"#{call_infos.first.full_name}"
|
51
|
+
end
|
52
|
+
|
53
|
+
private
|
54
|
+
|
55
|
+
def aggregate(method_name)
|
56
|
+
self.call_infos.inject(0) do |sum, call_info|
|
57
|
+
sum += call_info.send(method_name)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
end
|
data/lib/ruby-prof/call_info.rb
CHANGED
@@ -198,7 +198,7 @@ module RubyProf
|
|
198
198
|
self_percentage = (method.self_time/total_time) * 100 %>
|
199
199
|
|
200
200
|
<!-- Parents -->
|
201
|
-
<% for caller in method.
|
201
|
+
<% for caller in method.aggregate_parents
|
202
202
|
next unless caller.parent
|
203
203
|
next if min_time && caller.total_time < min_time %>
|
204
204
|
<tr>
|
@@ -228,7 +228,7 @@ module RubyProf
|
|
228
228
|
</tr>
|
229
229
|
|
230
230
|
<!-- Children -->
|
231
|
-
<% for callee in method.
|
231
|
+
<% for callee in method.aggregate_children %>
|
232
232
|
<% next if min_time && callee.total_time < min_time %>
|
233
233
|
<tr>
|
234
234
|
<td> </td>
|
@@ -127,7 +127,7 @@ module RubyProf
|
|
127
127
|
end
|
128
128
|
|
129
129
|
def print_parents(thread_id, method)
|
130
|
-
method.
|
130
|
+
method.aggregate_parents.each do |caller|
|
131
131
|
next unless caller.parent
|
132
132
|
@output << " " * 2 * PERCENTAGE_WIDTH
|
133
133
|
@output << sprintf("%#{TIME_WIDTH}.2f", caller.total_time)
|
@@ -143,7 +143,7 @@ module RubyProf
|
|
143
143
|
end
|
144
144
|
|
145
145
|
def print_children(method)
|
146
|
-
method.
|
146
|
+
method.aggregate_children.each do |child|
|
147
147
|
# Get children method
|
148
148
|
|
149
149
|
@output << " " * 2 * PERCENTAGE_WIDTH
|
@@ -48,14 +48,6 @@ module RubyProf
|
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
|
-
def children
|
52
|
-
@children ||= begin
|
53
|
-
call_infos.map do |call_info|
|
54
|
-
call_info.children
|
55
|
-
end.flatten
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
51
|
def children_time
|
60
52
|
@children_time ||= begin
|
61
53
|
call_infos.inject(0) do |sum, call_info|
|
@@ -78,8 +70,38 @@ module RubyProf
|
|
78
70
|
end
|
79
71
|
end
|
80
72
|
|
73
|
+
def children
|
74
|
+
@children ||= begin
|
75
|
+
call_infos.map do |call_info|
|
76
|
+
call_info.children
|
77
|
+
end.flatten
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def aggregate_parents
|
82
|
+
aggregate_call_infos(self.call_infos)
|
83
|
+
end
|
84
|
+
|
85
|
+
def aggregate_children
|
86
|
+
aggregate_call_infos(self.children)
|
87
|
+
end
|
88
|
+
|
81
89
|
def to_s
|
82
90
|
full_name
|
83
91
|
end
|
92
|
+
|
93
|
+
private
|
94
|
+
|
95
|
+
def aggregate_call_infos(call_infos)
|
96
|
+
groups = call_infos.inject(Hash.new) do |hash, call_info|
|
97
|
+
key = call_info.parent ? call_info.parent.target : self
|
98
|
+
(hash[key] ||= []) << call_info
|
99
|
+
hash
|
100
|
+
end
|
101
|
+
|
102
|
+
groups.map do |key, value|
|
103
|
+
AggregateCallInfo.new(value)
|
104
|
+
end
|
105
|
+
end
|
84
106
|
end
|
85
107
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<!-- Generator: GNU source-highlight 2.9
|
2
|
+
by Lorenzo Bettini
|
3
|
+
http://www.lorenzobettini.it
|
4
|
+
http://www.gnu.org/software/src-highlite -->
|
5
|
+
<pre><tt><span style="font-weight: bold"><span style="color: #000080">require</span></span> File<span style="color: #990000">.</span>dirname<span style="color: #990000">(</span><span style="font-weight: bold"><span style="color: #0000FF">__FILE__</span></span><span style="color: #990000">)</span> <span style="color: #990000">+</span> <span style="color: #FF0000">'../profile_test_helper'</span>
|
6
|
+
|
7
|
+
<span style="font-weight: bold"><span style="color: #0000FF">class</span></span> ExampleTest <span style="color: #990000"><</span> Test<span style="color: #990000">::</span>Unit<span style="color: #990000">::</span>TestCase
|
8
|
+
<span style="font-weight: bold"><span style="color: #0000FF">include</span></span> RubyProf<span style="color: #990000">::</span>Test
|
9
|
+
|
10
|
+
<span style="font-weight: bold"><span style="color: #0000FF">def</span></span> test_stuff
|
11
|
+
puts <span style="color: #FF0000">"Test method"</span>
|
12
|
+
<span style="font-weight: bold"><span style="color: #0000FF">end</span></span>
|
13
|
+
<span style="font-weight: bold"><span style="color: #0000FF">end</span></span>
|
14
|
+
</tt></pre>
|
@@ -0,0 +1,121 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
require 'ruby-prof'
|
5
|
+
|
6
|
+
# Test data
|
7
|
+
# A B C
|
8
|
+
# | | |
|
9
|
+
# Z A A
|
10
|
+
# | |
|
11
|
+
# Z Z
|
12
|
+
|
13
|
+
class AggClass
|
14
|
+
def z
|
15
|
+
sleep 1
|
16
|
+
end
|
17
|
+
|
18
|
+
def a
|
19
|
+
z
|
20
|
+
end
|
21
|
+
|
22
|
+
def b
|
23
|
+
a
|
24
|
+
end
|
25
|
+
|
26
|
+
def c
|
27
|
+
a
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
class AggregateTest < Test::Unit::TestCase
|
32
|
+
def setup
|
33
|
+
# Need to use wall time for this test due to the sleep calls
|
34
|
+
RubyProf::measure_mode = RubyProf::WALL_TIME
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_call_infos
|
38
|
+
c1 = AggClass.new
|
39
|
+
result = RubyProf.profile do
|
40
|
+
c1.a
|
41
|
+
c1.b
|
42
|
+
c1.c
|
43
|
+
end
|
44
|
+
|
45
|
+
methods = result.threads.values.first.sort.reverse
|
46
|
+
method = methods.find {|method| method.full_name == 'AggClass#z'}
|
47
|
+
|
48
|
+
# Check AggClass#z
|
49
|
+
assert_equal('AggClass#z', method.full_name)
|
50
|
+
assert_equal(3, method.called)
|
51
|
+
assert_in_delta(3, method.total_time, 0.01)
|
52
|
+
assert_in_delta(0, method.wait_time, 0.01)
|
53
|
+
assert_in_delta(0, method.self_time, 0.01)
|
54
|
+
assert_in_delta(3, method.children_time, 0.01)
|
55
|
+
assert_equal(3, method.call_infos.length)
|
56
|
+
|
57
|
+
call_info = method.call_infos[0]
|
58
|
+
assert_equal('AggregateTest#test_call_infos->AggClass#a->AggClass#z', call_info.call_sequence)
|
59
|
+
assert_equal(1, call_info.children.length)
|
60
|
+
|
61
|
+
call_info = method.call_infos[1]
|
62
|
+
assert_equal('AggregateTest#test_call_infos->AggClass#b->AggClass#a->AggClass#z', call_info.call_sequence)
|
63
|
+
assert_equal(1, call_info.children.length)
|
64
|
+
|
65
|
+
call_info = method.call_infos[2]
|
66
|
+
assert_equal('AggregateTest#test_call_infos->AggClass#c->AggClass#a->AggClass#z', call_info.call_sequence)
|
67
|
+
assert_equal(1, call_info.children.length)
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_aggregates_parents
|
71
|
+
c1 = AggClass.new
|
72
|
+
result = RubyProf.profile do
|
73
|
+
c1.a
|
74
|
+
c1.b
|
75
|
+
c1.c
|
76
|
+
end
|
77
|
+
|
78
|
+
methods = result.threads.values.first.sort.reverse
|
79
|
+
method = methods.find {|method| method.full_name == 'AggClass#z'}
|
80
|
+
|
81
|
+
# Check AggClass#z
|
82
|
+
assert_equal('AggClass#z', method.full_name)
|
83
|
+
|
84
|
+
call_infos = method.aggregate_parents
|
85
|
+
assert_equal(1, call_infos.length)
|
86
|
+
|
87
|
+
call_info = call_infos.first
|
88
|
+
assert_equal('AggClass#a', call_info.parent.target.full_name)
|
89
|
+
assert_in_delta(3, call_info.total_time, 0.01)
|
90
|
+
assert_in_delta(0, call_info.wait_time, 0.01)
|
91
|
+
assert_in_delta(0, call_info.self_time, 0.01)
|
92
|
+
assert_in_delta(3, call_info.children_time, 0.01)
|
93
|
+
assert_equal(3, call_info.called)
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_aggregates_children
|
97
|
+
c1 = AggClass.new
|
98
|
+
result = RubyProf.profile do
|
99
|
+
c1.a
|
100
|
+
c1.b
|
101
|
+
c1.c
|
102
|
+
end
|
103
|
+
|
104
|
+
methods = result.threads.values.first.sort.reverse
|
105
|
+
method = methods.find {|method| method.full_name == 'AggClass#a'}
|
106
|
+
|
107
|
+
# Check AggClass#a
|
108
|
+
assert_equal('AggClass#a', method.full_name)
|
109
|
+
|
110
|
+
call_infos = method.aggregate_children
|
111
|
+
assert_equal(1, call_infos.length)
|
112
|
+
|
113
|
+
call_info = call_infos.first
|
114
|
+
assert_equal('AggClass#z', call_info.target.full_name)
|
115
|
+
assert_in_delta(3, call_info.total_time, 0.01)
|
116
|
+
assert_in_delta(0, call_info.wait_time, 0.01)
|
117
|
+
assert_in_delta(0, call_info.self_time, 0.01)
|
118
|
+
assert_in_delta(3, call_info.children_time, 0.01)
|
119
|
+
assert_equal(3, call_info.called)
|
120
|
+
end
|
121
|
+
end
|
data/test/stack_test.rb
CHANGED
@@ -10,7 +10,7 @@ require 'ruby-prof'
|
|
10
10
|
# \
|
11
11
|
# B
|
12
12
|
|
13
|
-
class
|
13
|
+
class StackClass
|
14
14
|
def a
|
15
15
|
sleep 1
|
16
16
|
b
|
@@ -34,17 +34,17 @@ class StackTest < Test::Unit::TestCase
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def test_call_sequence
|
37
|
-
c =
|
37
|
+
c = StackClass.new
|
38
38
|
result = RubyProf.profile do
|
39
39
|
c.a
|
40
40
|
end
|
41
41
|
|
42
42
|
# Length should be 5:
|
43
43
|
# StackTest#test_call_sequence
|
44
|
-
#
|
44
|
+
# StackClass#a
|
45
45
|
# Kernel#sleep
|
46
|
-
#
|
47
|
-
#
|
46
|
+
# StackClass#c
|
47
|
+
# StackClass#b
|
48
48
|
|
49
49
|
methods = result.threads.values.first.sort.reverse
|
50
50
|
assert_equal(5, methods.length)
|
@@ -63,9 +63,9 @@ class StackTest < Test::Unit::TestCase
|
|
63
63
|
assert_equal('StackTest#test_call_sequence', call_info.call_sequence)
|
64
64
|
assert_equal(1, call_info.children.length)
|
65
65
|
|
66
|
-
# Check
|
66
|
+
# Check StackClass#a
|
67
67
|
method = methods[1]
|
68
|
-
assert_equal('
|
68
|
+
assert_equal('StackClass#a', method.full_name)
|
69
69
|
assert_equal(1, method.called)
|
70
70
|
assert_in_delta(8, method.total_time, 0.01)
|
71
71
|
assert_in_delta(0, method.wait_time, 0.01)
|
@@ -74,7 +74,7 @@ class StackTest < Test::Unit::TestCase
|
|
74
74
|
assert_equal(1, method.call_infos.length)
|
75
75
|
|
76
76
|
call_info = method.call_infos[0]
|
77
|
-
assert_equal('StackTest#test_call_sequence->
|
77
|
+
assert_equal('StackTest#test_call_sequence->StackClass#a', call_info.call_sequence)
|
78
78
|
assert_equal(3, call_info.children.length)
|
79
79
|
|
80
80
|
# Check Kernel#sleep
|
@@ -88,24 +88,24 @@ class StackTest < Test::Unit::TestCase
|
|
88
88
|
assert_equal(4, method.call_infos.length)
|
89
89
|
|
90
90
|
call_info = method.call_infos[0]
|
91
|
-
assert_equal('StackTest#test_call_sequence->
|
91
|
+
assert_equal('StackTest#test_call_sequence->StackClass#a->Kernel#sleep', call_info.call_sequence)
|
92
92
|
assert_equal(0, call_info.children.length)
|
93
93
|
|
94
94
|
call_info = method.call_infos[1]
|
95
|
-
assert_equal('StackTest#test_call_sequence->
|
95
|
+
assert_equal('StackTest#test_call_sequence->StackClass#a->StackClass#b->Kernel#sleep', call_info.call_sequence)
|
96
96
|
assert_equal(0, call_info.children.length)
|
97
97
|
|
98
98
|
call_info = method.call_infos[2]
|
99
|
-
assert_equal('StackTest#test_call_sequence->
|
99
|
+
assert_equal('StackTest#test_call_sequence->StackClass#a->StackClass#c->Kernel#sleep', call_info.call_sequence)
|
100
100
|
assert_equal(0, call_info.children.length)
|
101
101
|
|
102
102
|
call_info = method.call_infos[3]
|
103
|
-
assert_equal('StackTest#test_call_sequence->
|
103
|
+
assert_equal('StackTest#test_call_sequence->StackClass#a->StackClass#c->StackClass#b->Kernel#sleep', call_info.call_sequence)
|
104
104
|
assert_equal(0, call_info.children.length)
|
105
105
|
|
106
|
-
# Check
|
106
|
+
# Check StackClass#c
|
107
107
|
method = methods[3]
|
108
|
-
assert_equal('
|
108
|
+
assert_equal('StackClass#c', method.full_name)
|
109
109
|
assert_equal(1, method.called)
|
110
110
|
assert_in_delta(5, method.total_time, 0.01)
|
111
111
|
assert_in_delta(0, method.wait_time, 0.01)
|
@@ -114,12 +114,12 @@ class StackTest < Test::Unit::TestCase
|
|
114
114
|
assert_equal(1, method.call_infos.length)
|
115
115
|
|
116
116
|
call_info = method.call_infos[0]
|
117
|
-
assert_equal('StackTest#test_call_sequence->
|
117
|
+
assert_equal('StackTest#test_call_sequence->StackClass#a->StackClass#c', call_info.call_sequence)
|
118
118
|
assert_equal(2, call_info.children.length)
|
119
119
|
|
120
|
-
# Check
|
120
|
+
# Check StackClass#b
|
121
121
|
method = methods[4]
|
122
|
-
assert_equal('
|
122
|
+
assert_equal('StackClass#b', method.full_name)
|
123
123
|
assert_equal(2, method.called)
|
124
124
|
assert_in_delta(4, method.total_time, 0.01)
|
125
125
|
assert_in_delta(0, method.wait_time, 0.01)
|
@@ -128,11 +128,11 @@ class StackTest < Test::Unit::TestCase
|
|
128
128
|
assert_equal(2, method.call_infos.length)
|
129
129
|
|
130
130
|
call_info = method.call_infos[0]
|
131
|
-
assert_equal('StackTest#test_call_sequence->
|
131
|
+
assert_equal('StackTest#test_call_sequence->StackClass#a->StackClass#b', call_info.call_sequence)
|
132
132
|
assert_equal(1, call_info.children.length)
|
133
133
|
|
134
134
|
call_info = method.call_infos[1]
|
135
|
-
assert_equal('StackTest#test_call_sequence->
|
135
|
+
assert_equal('StackTest#test_call_sequence->StackClass#a->StackClass#c->StackClass#b', call_info.call_sequence)
|
136
136
|
assert_equal(1, call_info.children.length)
|
137
137
|
end
|
138
138
|
end
|
data/test/test_suite.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'test/unit'
|
2
2
|
|
3
|
+
require 'aggregate_test'
|
3
4
|
require 'basic_test'
|
4
5
|
require 'duplicate_names_test'
|
5
6
|
require 'exceptions_test'
|
@@ -9,7 +10,6 @@ require 'module_test'
|
|
9
10
|
require 'no_method_class_test'
|
10
11
|
require 'prime_test'
|
11
12
|
require 'printers_test'
|
12
|
-
require 'profile_unit_test'
|
13
13
|
require 'recursive_test'
|
14
14
|
require 'singleton_test'
|
15
15
|
require 'stack_test'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-prof
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.1
|
5
5
|
platform: x86-mswin32-60
|
6
6
|
authors:
|
7
7
|
- Shugo Maeda and Charlie Savage
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-11-
|
12
|
+
date: 2008-11-30 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -49,11 +49,13 @@ files:
|
|
49
49
|
- ext/vc/ruby_prof.vcproj
|
50
50
|
- lib/ruby-prof
|
51
51
|
- lib/ruby-prof/abstract_printer.rb
|
52
|
+
- lib/ruby-prof/aggregate_call_info.rb
|
52
53
|
- lib/ruby-prof/call_info.rb
|
53
54
|
- lib/ruby-prof/call_tree_printer.rb
|
54
55
|
- lib/ruby-prof/flat_printer.rb
|
55
56
|
- lib/ruby-prof/graph_html_printer.rb
|
56
57
|
- lib/ruby-prof/graph_printer.rb
|
58
|
+
- lib/ruby-prof/group_by.rb
|
57
59
|
- lib/ruby-prof/method_info.rb
|
58
60
|
- lib/ruby-prof/task.rb
|
59
61
|
- lib/ruby-prof/test.rb
|
@@ -63,7 +65,9 @@ files:
|
|
63
65
|
- rails/environment/profile.rb
|
64
66
|
- rails/example
|
65
67
|
- rails/example/example_test.rb
|
68
|
+
- rails/example/example_test.rb.html
|
66
69
|
- rails/profile_test_helper.rb
|
70
|
+
- test/aggregate_test.rb
|
67
71
|
- test/basic_test.rb
|
68
72
|
- test/duplicate_names_test.rb
|
69
73
|
- test/exceptions_test.rb
|
@@ -75,7 +79,6 @@ files:
|
|
75
79
|
- test/prime.rb
|
76
80
|
- test/prime_test.rb
|
77
81
|
- test/printers_test.rb
|
78
|
-
- test/profile_unit_test.rb
|
79
82
|
- test/recursive_test.rb
|
80
83
|
- test/singleton_test.rb
|
81
84
|
- test/stack_test.rb
|
@@ -106,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
106
109
|
requirements: []
|
107
110
|
|
108
111
|
rubyforge_project: ruby-prof
|
109
|
-
rubygems_version: 1.
|
112
|
+
rubygems_version: 1.3.1
|
110
113
|
signing_key:
|
111
114
|
specification_version: 2
|
112
115
|
summary: Fast Ruby profiler
|
data/test/profile_unit_test.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
require 'test/unit'
|
3
|
-
require 'ruby-prof'
|
4
|
-
|
5
|
-
# Need to use wall time for this test due to the sleep calls
|
6
|
-
RubyProf::measure_mode = RubyProf::WALL_TIME
|
7
|
-
|
8
|
-
# -- Tests ----
|
9
|
-
class ProfileTest < Test::Unit::TestCase
|
10
|
-
include RubyProf::Test
|
11
|
-
|
12
|
-
def teardown
|
13
|
-
profile_dir = output_dir
|
14
|
-
|
15
|
-
#file_path = File.join(profile_dir, 'test_profile_profile_test.html')
|
16
|
-
#assert(File.exists?(file_path))
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_profile
|
20
|
-
sleep(1)
|
21
|
-
end
|
22
|
-
end
|