ruby-prof 0.4.0-mswin32 → 0.4.1-mswin32
Sign up to get free protection for your applications and to get access to all the features.
- data/README +220 -220
- data/Rakefile +3 -3
- data/doc/created.rid +1 -1
- data/doc/files/LICENSE.html +0 -142
- data/doc/files/README.html +2 -2
- data/doc/files/examples/flat_txt.html +8 -16
- data/doc/files/examples/graph_txt.html +10 -18
- data/doc/files/ext/ruby_prof_c.html +1 -1
- data/doc/files/lib/ruby-prof/flat_printer_rb.html +1 -1
- data/doc/files/lib/ruby-prof/graph_html_printer_rb.html +1 -1
- data/doc/files/lib/ruby-prof/graph_printer_rb.html +1 -1
- data/examples/flat.txt +55 -57
- data/examples/graph.html +827 -827
- data/examples/graph.txt +170 -171
- data/ext/ruby_prof.c +35 -20
- data/lib/ruby-prof/flat_printer.rb +8 -9
- data/lib/ruby-prof/graph_html_printer.rb +3 -2
- data/lib/ruby-prof/graph_printer.rb +4 -5
- data/lib/ruby_prof.so +0 -0
- data/test/basic_test.rb +148 -141
- data/test/clock_mode_test.rb +72 -72
- data/test/duplicate_names_test.rb +37 -0
- data/test/module_test.rb +45 -45
- data/test/prime.rb +58 -58
- data/test/prime_test.rb +23 -23
- data/test/printers_test.rb +27 -27
- data/test/recursive_test.rb +55 -55
- data/test/test_helper.rb +45 -45
- data/test/test_suite.rb +10 -9
- data/test/thread_test.rb +32 -32
- data/test/timing_test.rb +90 -90
- metadata +3 -16
- data/doc/classes/RubyProf.html +0 -563
- data/doc/classes/RubyProf/CallInfo.html +0 -274
- data/doc/classes/RubyProf/FlatPrinter.html +0 -207
- data/doc/classes/RubyProf/GraphHtmlPrinter.html +0 -538
- data/doc/classes/RubyProf/GraphPrinter.html +0 -240
- data/doc/classes/RubyProf/MethodInfo.html +0 -556
- data/doc/classes/RubyProf/ProfileTask.html +0 -395
- data/doc/classes/RubyProf/Result.html +0 -234
- data/doc/fr_class_index.html +0 -34
- data/doc/fr_file_index.html +0 -39
- data/doc/fr_method_index.html +0 -67
- data/doc/index.html +0 -24
- data/test/test.rb +0 -3
@@ -0,0 +1,37 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
require 'ruby-prof'
|
5
|
+
require 'test_helper'
|
6
|
+
|
7
|
+
class DuplicateNames < Test::Unit::TestCase
|
8
|
+
def test_names
|
9
|
+
result = RubyProf::profile do
|
10
|
+
str = %{module Foo; class Bar; def foo; end end end}
|
11
|
+
|
12
|
+
eval str
|
13
|
+
Foo::Bar.new.foo
|
14
|
+
DuplicateNames.class_eval {remove_const :Foo}
|
15
|
+
|
16
|
+
eval str
|
17
|
+
Foo::Bar.new.foo
|
18
|
+
DuplicateNames.class_eval {remove_const :Foo}
|
19
|
+
|
20
|
+
eval str
|
21
|
+
Foo::Bar.new.foo
|
22
|
+
end
|
23
|
+
print_results(result)
|
24
|
+
|
25
|
+
# There should be 3 foo methods
|
26
|
+
methods = result.threads.values.first
|
27
|
+
|
28
|
+
method_info = methods['DuplicateNames::Foo::Bar#foo']
|
29
|
+
assert_not_nil(method_info)
|
30
|
+
|
31
|
+
method_info = methods['DuplicateNames::Foo::Bar#foo_1']
|
32
|
+
assert_not_nil(method_info)
|
33
|
+
|
34
|
+
method_info = methods['DuplicateNames::Foo::Bar#foo_2']
|
35
|
+
assert_not_nil(method_info)
|
36
|
+
end
|
37
|
+
end
|
data/test/module_test.rb
CHANGED
@@ -1,45 +1,45 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'test/unit'
|
4
|
-
require 'ruby-prof'
|
5
|
-
require 'test_helper'
|
6
|
-
|
7
|
-
|
8
|
-
module Foo
|
9
|
-
def Foo::hello
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
module Bar
|
14
|
-
def Bar::hello
|
15
|
-
Foo::hello
|
16
|
-
end
|
17
|
-
|
18
|
-
def hello
|
19
|
-
Bar::hello
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
include Bar
|
24
|
-
|
25
|
-
class BasicTest < Test::Unit::TestCase
|
26
|
-
def test_nested_modules
|
27
|
-
result = RubyProf.profile do
|
28
|
-
hello
|
29
|
-
end
|
30
|
-
|
31
|
-
methods = result.threads.values.first
|
32
|
-
|
33
|
-
# Length should be 4s
|
34
|
-
assert_equal(4, methods.length)
|
35
|
-
|
36
|
-
method1 = methods['Bar#hello']
|
37
|
-
assert_not_nil(method1)
|
38
|
-
|
39
|
-
method1 = methods['<Module::Bar>#hello']
|
40
|
-
assert_not_nil(method1)
|
41
|
-
|
42
|
-
method1 = methods['<Module::Foo>#hello']
|
43
|
-
assert_not_nil(method1)
|
44
|
-
end
|
45
|
-
end
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
require 'ruby-prof'
|
5
|
+
require 'test_helper'
|
6
|
+
|
7
|
+
|
8
|
+
module Foo
|
9
|
+
def Foo::hello
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
module Bar
|
14
|
+
def Bar::hello
|
15
|
+
Foo::hello
|
16
|
+
end
|
17
|
+
|
18
|
+
def hello
|
19
|
+
Bar::hello
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
include Bar
|
24
|
+
|
25
|
+
class BasicTest < Test::Unit::TestCase
|
26
|
+
def test_nested_modules
|
27
|
+
result = RubyProf.profile do
|
28
|
+
hello
|
29
|
+
end
|
30
|
+
|
31
|
+
methods = result.threads.values.first
|
32
|
+
|
33
|
+
# Length should be 4s
|
34
|
+
assert_equal(4, methods.length)
|
35
|
+
|
36
|
+
method1 = methods['Bar#hello']
|
37
|
+
assert_not_nil(method1)
|
38
|
+
|
39
|
+
method1 = methods['<Module::Bar>#hello']
|
40
|
+
assert_not_nil(method1)
|
41
|
+
|
42
|
+
method1 = methods['<Module::Foo>#hello']
|
43
|
+
assert_not_nil(method1)
|
44
|
+
end
|
45
|
+
end
|
data/test/prime.rb
CHANGED
@@ -1,58 +1,58 @@
|
|
1
|
-
# A silly little test program that finds prime numbers. It
|
2
|
-
# is intentionally badly designed to show off the use
|
3
|
-
# or ruby-prof.
|
4
|
-
#
|
5
|
-
# Source from http://people.cs.uchicago.edu/~bomb154/154/maclabs/profilers-lab/
|
6
|
-
|
7
|
-
def make_random_array(length, maxnum)
|
8
|
-
result = Array.new(length)
|
9
|
-
result.each_index do |i|
|
10
|
-
result[i] = rand(maxnum)
|
11
|
-
end
|
12
|
-
|
13
|
-
result
|
14
|
-
end
|
15
|
-
|
16
|
-
def is_prime(x)
|
17
|
-
y = 2
|
18
|
-
y.upto(x-1) do |i|
|
19
|
-
return false if (x % i) == 0
|
20
|
-
end
|
21
|
-
true
|
22
|
-
end
|
23
|
-
|
24
|
-
def find_primes(arr)
|
25
|
-
result = arr.select do |value|
|
26
|
-
is_prime(value)
|
27
|
-
end
|
28
|
-
result
|
29
|
-
end
|
30
|
-
|
31
|
-
def find_largest(primes)
|
32
|
-
largest = primes.first
|
33
|
-
|
34
|
-
# Intentionally use upto for example purposes
|
35
|
-
# (upto is also called from is_prime)
|
36
|
-
0.upto(primes.length-1) do |i|
|
37
|
-
sleep(0.02)
|
38
|
-
prime = primes[i]
|
39
|
-
if prime > largest
|
40
|
-
largest = prime
|
41
|
-
end
|
42
|
-
end
|
43
|
-
largest
|
44
|
-
end
|
45
|
-
|
46
|
-
def run_primes
|
47
|
-
length = 500
|
48
|
-
maxnum = 10000
|
49
|
-
|
50
|
-
# Create random numbers
|
51
|
-
random_array = make_random_array(length, maxnum)
|
52
|
-
|
53
|
-
# Find the primes
|
54
|
-
primes = find_primes(random_array)
|
55
|
-
|
56
|
-
# Find the largest primes
|
57
|
-
largest = find_largest(primes)
|
58
|
-
end
|
1
|
+
# A silly little test program that finds prime numbers. It
|
2
|
+
# is intentionally badly designed to show off the use
|
3
|
+
# or ruby-prof.
|
4
|
+
#
|
5
|
+
# Source from http://people.cs.uchicago.edu/~bomb154/154/maclabs/profilers-lab/
|
6
|
+
|
7
|
+
def make_random_array(length, maxnum)
|
8
|
+
result = Array.new(length)
|
9
|
+
result.each_index do |i|
|
10
|
+
result[i] = rand(maxnum)
|
11
|
+
end
|
12
|
+
|
13
|
+
result
|
14
|
+
end
|
15
|
+
|
16
|
+
def is_prime(x)
|
17
|
+
y = 2
|
18
|
+
y.upto(x-1) do |i|
|
19
|
+
return false if (x % i) == 0
|
20
|
+
end
|
21
|
+
true
|
22
|
+
end
|
23
|
+
|
24
|
+
def find_primes(arr)
|
25
|
+
result = arr.select do |value|
|
26
|
+
is_prime(value)
|
27
|
+
end
|
28
|
+
result
|
29
|
+
end
|
30
|
+
|
31
|
+
def find_largest(primes)
|
32
|
+
largest = primes.first
|
33
|
+
|
34
|
+
# Intentionally use upto for example purposes
|
35
|
+
# (upto is also called from is_prime)
|
36
|
+
0.upto(primes.length-1) do |i|
|
37
|
+
sleep(0.02)
|
38
|
+
prime = primes[i]
|
39
|
+
if prime > largest
|
40
|
+
largest = prime
|
41
|
+
end
|
42
|
+
end
|
43
|
+
largest
|
44
|
+
end
|
45
|
+
|
46
|
+
def run_primes
|
47
|
+
length = 500
|
48
|
+
maxnum = 10000
|
49
|
+
|
50
|
+
# Create random numbers
|
51
|
+
random_array = make_random_array(length, maxnum)
|
52
|
+
|
53
|
+
# Find the primes
|
54
|
+
primes = find_primes(random_array)
|
55
|
+
|
56
|
+
# Find the largest primes
|
57
|
+
largest = find_largest(primes)
|
58
|
+
end
|
data/test/prime_test.rb
CHANGED
@@ -1,24 +1,24 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'test/unit'
|
4
|
-
require 'ruby-prof'
|
5
|
-
require 'prime'
|
6
|
-
require 'test_helper'
|
7
|
-
|
8
|
-
|
9
|
-
# -- Tests ----
|
10
|
-
class PrimeTest < Test::Unit::TestCase
|
11
|
-
def test_consistency
|
12
|
-
result = RubyProf.profile do
|
13
|
-
run_primes
|
14
|
-
end
|
15
|
-
|
16
|
-
result.threads.values.each do |methods|
|
17
|
-
methods.values.each do |method|
|
18
|
-
check_parent_times(method)
|
19
|
-
check_parent_calls(method)
|
20
|
-
check_child_times(method)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
require 'ruby-prof'
|
5
|
+
require 'prime'
|
6
|
+
require 'test_helper'
|
7
|
+
|
8
|
+
|
9
|
+
# -- Tests ----
|
10
|
+
class PrimeTest < Test::Unit::TestCase
|
11
|
+
def test_consistency
|
12
|
+
result = RubyProf.profile do
|
13
|
+
run_primes
|
14
|
+
end
|
15
|
+
|
16
|
+
result.threads.values.each do |methods|
|
17
|
+
methods.values.each do |method|
|
18
|
+
check_parent_times(method)
|
19
|
+
check_parent_calls(method)
|
20
|
+
check_child_times(method)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
24
|
end
|
data/test/printers_test.rb
CHANGED
@@ -1,28 +1,28 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'test/unit'
|
4
|
-
require 'ruby-prof'
|
5
|
-
require 'prime'
|
6
|
-
require 'test_helper'
|
7
|
-
|
8
|
-
|
9
|
-
# -- Tests ----
|
10
|
-
class PrintersTest < Test::Unit::TestCase
|
11
|
-
def test_printer
|
12
|
-
result = RubyProf.profile do
|
13
|
-
run_primes
|
14
|
-
end
|
15
|
-
|
16
|
-
printer = RubyProf::FlatPrinter.new(result)
|
17
|
-
printer.print(STDOUT)
|
18
|
-
|
19
|
-
printer = RubyProf::GraphHtmlPrinter.new(result)
|
20
|
-
printer.print(STDOUT)
|
21
|
-
|
22
|
-
printer = RubyProf::GraphPrinter.new(result)
|
23
|
-
printer.print(STDOUT)
|
24
|
-
|
25
|
-
# we should get here
|
26
|
-
assert(true)
|
27
|
-
end
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
require 'ruby-prof'
|
5
|
+
require 'prime'
|
6
|
+
require 'test_helper'
|
7
|
+
|
8
|
+
|
9
|
+
# -- Tests ----
|
10
|
+
class PrintersTest < Test::Unit::TestCase
|
11
|
+
def test_printer
|
12
|
+
result = RubyProf.profile do
|
13
|
+
run_primes
|
14
|
+
end
|
15
|
+
|
16
|
+
printer = RubyProf::FlatPrinter.new(result)
|
17
|
+
printer.print(STDOUT)
|
18
|
+
|
19
|
+
printer = RubyProf::GraphHtmlPrinter.new(result)
|
20
|
+
printer.print(STDOUT)
|
21
|
+
|
22
|
+
printer = RubyProf::GraphPrinter.new(result)
|
23
|
+
printer.print(STDOUT)
|
24
|
+
|
25
|
+
# we should get here
|
26
|
+
assert(true)
|
27
|
+
end
|
28
28
|
end
|
data/test/recursive_test.rb
CHANGED
@@ -1,55 +1,55 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'test/unit'
|
4
|
-
require 'ruby-prof'
|
5
|
-
require 'timeout'
|
6
|
-
require 'test_helper'
|
7
|
-
|
8
|
-
|
9
|
-
def simple(n)
|
10
|
-
sleep(1)
|
11
|
-
n -= 1
|
12
|
-
return if n == 0
|
13
|
-
simple(n)
|
14
|
-
end
|
15
|
-
|
16
|
-
def factorial(n)
|
17
|
-
if n < 2 then
|
18
|
-
n
|
19
|
-
else
|
20
|
-
n * factorial(n-1)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
|
25
|
-
# -- Tests ----
|
26
|
-
class RecursiveTest < Test::Unit::TestCase
|
27
|
-
def test_recursive
|
28
|
-
result = RubyProf.profile do
|
29
|
-
simple(3)
|
30
|
-
end
|
31
|
-
|
32
|
-
result.threads.values.each do |methods|
|
33
|
-
methods.values.each do |method|
|
34
|
-
check_parent_times(method)
|
35
|
-
check_parent_calls(method)
|
36
|
-
check_child_times(method)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
def test_factorial
|
42
|
-
result = RubyProf.profile do
|
43
|
-
# Around 700 on windows causes "stack level too deep" error
|
44
|
-
factorial(650)
|
45
|
-
end
|
46
|
-
|
47
|
-
result.threads.values.each do |methods|
|
48
|
-
methods.values.each do |method|
|
49
|
-
check_parent_times(method)
|
50
|
-
check_parent_calls(method)
|
51
|
-
check_child_times(method)
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
require 'ruby-prof'
|
5
|
+
require 'timeout'
|
6
|
+
require 'test_helper'
|
7
|
+
|
8
|
+
|
9
|
+
def simple(n)
|
10
|
+
sleep(1)
|
11
|
+
n -= 1
|
12
|
+
return if n == 0
|
13
|
+
simple(n)
|
14
|
+
end
|
15
|
+
|
16
|
+
def factorial(n)
|
17
|
+
if n < 2 then
|
18
|
+
n
|
19
|
+
else
|
20
|
+
n * factorial(n-1)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
# -- Tests ----
|
26
|
+
class RecursiveTest < Test::Unit::TestCase
|
27
|
+
def test_recursive
|
28
|
+
result = RubyProf.profile do
|
29
|
+
simple(3)
|
30
|
+
end
|
31
|
+
|
32
|
+
result.threads.values.each do |methods|
|
33
|
+
methods.values.each do |method|
|
34
|
+
check_parent_times(method)
|
35
|
+
check_parent_calls(method)
|
36
|
+
check_child_times(method)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_factorial
|
42
|
+
result = RubyProf.profile do
|
43
|
+
# Around 700 on windows causes "stack level too deep" error
|
44
|
+
factorial(650)
|
45
|
+
end
|
46
|
+
|
47
|
+
result.threads.values.each do |methods|
|
48
|
+
methods.values.each do |method|
|
49
|
+
check_parent_times(method)
|
50
|
+
check_parent_calls(method)
|
51
|
+
check_child_times(method)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|