rubyperf 1.3.1 → 1.3.2
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.
- data/VERSION +1 -1
- data/lib/perf/meter.rb +1 -1
- data/lib/perf/report_format.rb +1 -0
- data/lib/perf/report_format_html.rb +37 -9
- data/lib/perf/report_format_simple.rb +1 -0
- data/rubyperf.gemspec +4 -3
- data/test/test_perf_meter.rb +1 -0
- metadata +27 -33
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.3.
|
1
|
+
1.3.2
|
data/lib/perf/meter.rb
CHANGED
@@ -417,7 +417,7 @@ protected
|
|
417
417
|
def method_missing(method_sym, *arguments, &block)
|
418
418
|
if method_sym.to_s =~ /^report_(.*)$/
|
419
419
|
klass=Object.const_get("Perf").const_get("ReportFormat#{camelize($1)}")
|
420
|
-
return klass.new.format(self) if klass
|
420
|
+
return klass.new.format(self,arguments[0]) if klass
|
421
421
|
end
|
422
422
|
super
|
423
423
|
end
|
data/lib/perf/report_format.rb
CHANGED
@@ -9,14 +9,42 @@ require 'cgi'
|
|
9
9
|
module Perf
|
10
10
|
class ReportFormatHtml < ReportFormat
|
11
11
|
|
12
|
-
PERCENT_FORMAT = "%.
|
13
|
-
|
12
|
+
PERCENT_FORMAT = "%.2f" # default for :time_format
|
13
|
+
TIME_FORMAT = "%.7f" # default for :percent_format
|
14
|
+
COUNT_FORMAT = "%d" # default for :count_format
|
15
|
+
INDENT = " "*3 # default for :indent_string
|
14
16
|
|
15
17
|
def initialize
|
16
18
|
super
|
17
19
|
@line=0
|
18
20
|
end
|
19
21
|
|
22
|
+
# Formats the report in HTML format and returns an array of strings containing the report.
|
23
|
+
#
|
24
|
+
# ==== Attributes
|
25
|
+
#
|
26
|
+
# * +perf+ - The Perf::Meter object to report
|
27
|
+
# * +options+ - A hash of options as follows:
|
28
|
+
# :time_format => sprintf format of the time (see TIME_FORMAT for default)
|
29
|
+
# :percent_foramt => sprintf format of the percent (see PERCENT_FORMAT for default)
|
30
|
+
# :count_format => sprintf format of the count (see COUNT_FORMAT for default)
|
31
|
+
# :indent_string => what string to use to indent the path (see INDENT for default)
|
32
|
+
#
|
33
|
+
# ==== Example
|
34
|
+
#
|
35
|
+
# m=Perf::Meter.new
|
36
|
+
# m.measure(:something) { something }
|
37
|
+
# m.report_html()
|
38
|
+
|
39
|
+
def format(perf,options={})
|
40
|
+
options||={}
|
41
|
+
@time_format = options[:time_format] || TIME_FORMAT
|
42
|
+
@percent_format = options[:percent_format] || PERCENT_FORMAT
|
43
|
+
@count_format = options[:count_format] || COUNT_FORMAT
|
44
|
+
@indent_string = options[:indent_string] || INDENT
|
45
|
+
super
|
46
|
+
end
|
47
|
+
|
20
48
|
# Formats the header
|
21
49
|
def format_header(v)
|
22
50
|
"<table class='rubyperf_report'><tr>" \
|
@@ -33,15 +61,15 @@ module Perf
|
|
33
61
|
# Formats the measure
|
34
62
|
def format_measure(v)
|
35
63
|
@line+=1
|
36
|
-
percent= v[:percent].is_a?(String) ? v[:percent] : (
|
64
|
+
percent= v[:percent].is_a?(String) ? v[:percent] : (@percent_format % v[:percent])
|
37
65
|
"<tr class='#{@line % 2==0 ? "even_row" : "odd_row"}'>" \
|
38
66
|
"<td class='title'>#{v[:title]}</td>" \
|
39
67
|
"<td class='percent'>#{percent}</td>" \
|
40
|
-
"<td class='count'>#{v[:count]}</td>" \
|
41
|
-
"<td class='user_time'>#{v[:time].utime}</td>" \
|
42
|
-
"<td class='system_time'>#{v[:time].stime}</td>" \
|
43
|
-
"<td class='total_time'>#{v[:time].total}</td>" \
|
44
|
-
"<td class='real_time'>#{v[:time].real}</td>" \
|
68
|
+
"<td class='count'>#{@count_format % v[:count]}</td>" \
|
69
|
+
"<td class='user_time'>#{@time_format % v[:time].utime}</td>" \
|
70
|
+
"<td class='system_time'>#{@time_format % v[:time].stime}</td>" \
|
71
|
+
"<td class='total_time'>#{@time_format % v[:time].total}</td>" \
|
72
|
+
"<td class='real_time'>#{@time_format % v[:time].real}</td>" \
|
45
73
|
"</tr>"
|
46
74
|
end
|
47
75
|
|
@@ -51,7 +79,7 @@ module Perf
|
|
51
79
|
|
52
80
|
def format_title(what,options)
|
53
81
|
path=what.split("\\")
|
54
|
-
"#{(path.size-2) ?
|
82
|
+
"#{(path.size-2) ? @indent_string * (path.size-2) : ""}\\#{CGI.escapeHTML(path.last)}"
|
55
83
|
end
|
56
84
|
|
57
85
|
end
|
data/rubyperf.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{rubyperf}
|
8
|
-
s.version = "1.3.
|
8
|
+
s.version = "1.3.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["lpasqualis"]
|
@@ -44,13 +44,14 @@ Gem::Specification.new do |s|
|
|
44
44
|
s.homepage = %q{http://github.com/lpasqualis/rubyperf}
|
45
45
|
s.licenses = ["MIT"]
|
46
46
|
s.require_paths = ["lib"]
|
47
|
-
s.rubygems_version = %q{1.
|
47
|
+
s.rubygems_version = %q{1.3.6}
|
48
48
|
s.summary = %q{rubyperf helps you measure ruby code performance}
|
49
49
|
|
50
50
|
if s.respond_to? :specification_version then
|
51
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
51
52
|
s.specification_version = 3
|
52
53
|
|
53
|
-
if Gem::Version.new(Gem::
|
54
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
54
55
|
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
55
56
|
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
56
57
|
s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
|
data/test/test_perf_meter.rb
CHANGED
@@ -108,6 +108,7 @@ class TestPerfMeter < Test::Unit::TestCase
|
|
108
108
|
assert PerfTestExample.new.methods.sort == imethods
|
109
109
|
|
110
110
|
assert_equal 6,m.report_simple.length
|
111
|
+
assert_equal 6,m.report_html(:percent_format=>"%.8f").length
|
111
112
|
assert_equal 6,m.report_html.length
|
112
113
|
assert_equal ['\methods,0',
|
113
114
|
'\methods\#<Class:PerfTestExample>.static_method,1',
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubyperf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
4
|
+
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 1
|
8
7
|
- 3
|
9
|
-
-
|
10
|
-
|
8
|
+
- 2
|
9
|
+
segments_generated: true
|
10
|
+
version: 1.3.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- lpasqualis
|
@@ -20,64 +20,60 @@ default_executable:
|
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
prerelease: false
|
23
|
-
|
24
|
-
|
23
|
+
type: :development
|
24
|
+
name: shoulda
|
25
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
25
26
|
requirements:
|
26
27
|
- - ">="
|
27
28
|
- !ruby/object:Gem::Version
|
28
|
-
hash: 3
|
29
29
|
segments:
|
30
30
|
- 0
|
31
|
+
segments_generated: true
|
31
32
|
version: "0"
|
32
|
-
|
33
|
-
name: shoulda
|
34
|
-
version_requirements: *id001
|
33
|
+
requirement: *id001
|
35
34
|
- !ruby/object:Gem::Dependency
|
36
35
|
prerelease: false
|
37
|
-
|
38
|
-
|
36
|
+
type: :development
|
37
|
+
name: bundler
|
38
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
40
|
- - ~>
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
hash: 23
|
43
42
|
segments:
|
44
43
|
- 1
|
45
44
|
- 0
|
46
45
|
- 0
|
46
|
+
segments_generated: true
|
47
47
|
version: 1.0.0
|
48
|
-
|
49
|
-
name: bundler
|
50
|
-
version_requirements: *id002
|
48
|
+
requirement: *id002
|
51
49
|
- !ruby/object:Gem::Dependency
|
52
50
|
prerelease: false
|
53
|
-
|
54
|
-
|
51
|
+
type: :development
|
52
|
+
name: jeweler
|
53
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
55
54
|
requirements:
|
56
55
|
- - ~>
|
57
56
|
- !ruby/object:Gem::Version
|
58
|
-
hash: 7
|
59
57
|
segments:
|
60
58
|
- 1
|
61
59
|
- 6
|
62
60
|
- 4
|
61
|
+
segments_generated: true
|
63
62
|
version: 1.6.4
|
64
|
-
|
65
|
-
name: jeweler
|
66
|
-
version_requirements: *id003
|
63
|
+
requirement: *id003
|
67
64
|
- !ruby/object:Gem::Dependency
|
68
65
|
prerelease: false
|
69
|
-
|
70
|
-
|
66
|
+
type: :development
|
67
|
+
name: rcov
|
68
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
71
69
|
requirements:
|
72
70
|
- - ">="
|
73
71
|
- !ruby/object:Gem::Version
|
74
|
-
hash: 3
|
75
72
|
segments:
|
76
73
|
- 0
|
74
|
+
segments_generated: true
|
77
75
|
version: "0"
|
78
|
-
|
79
|
-
name: rcov
|
80
|
-
version_requirements: *id004
|
76
|
+
requirement: *id004
|
81
77
|
description: Used to easily measure the performance of blocks of Ruby code, expressions and methods; provides reporting in various formats
|
82
78
|
email: lpasqualis@gmail.com
|
83
79
|
executables: []
|
@@ -121,27 +117,25 @@ rdoc_options: []
|
|
121
117
|
require_paths:
|
122
118
|
- lib
|
123
119
|
required_ruby_version: !ruby/object:Gem::Requirement
|
124
|
-
none: false
|
125
120
|
requirements:
|
126
121
|
- - ">="
|
127
122
|
- !ruby/object:Gem::Version
|
128
|
-
hash: 3
|
129
123
|
segments:
|
130
124
|
- 0
|
125
|
+
segments_generated: true
|
131
126
|
version: "0"
|
132
127
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
133
|
-
none: false
|
134
128
|
requirements:
|
135
129
|
- - ">="
|
136
130
|
- !ruby/object:Gem::Version
|
137
|
-
hash: 3
|
138
131
|
segments:
|
139
132
|
- 0
|
133
|
+
segments_generated: true
|
140
134
|
version: "0"
|
141
135
|
requirements: []
|
142
136
|
|
143
137
|
rubyforge_project:
|
144
|
-
rubygems_version: 1.
|
138
|
+
rubygems_version: 1.3.6
|
145
139
|
signing_key:
|
146
140
|
specification_version: 3
|
147
141
|
summary: rubyperf helps you measure ruby code performance
|