hitimes 0.4.1-x86-mswin32-60 → 1.0.0-x86-mswin32-60

Sign up to get free protection for your applications and to get access to all the features.
data/tasks/config.rb CHANGED
@@ -83,7 +83,7 @@ Configuration.for('rdoc') {
83
83
  files Configuration.for('packaging').files.rdoc
84
84
  main_page files.first
85
85
  title Configuration.for('project').name
86
- options %w[ --line-numbers --inline-source ]#-f darkfish ]
86
+ options %w[ --line-numbers --inline-source ]
87
87
  output_dir "doc"
88
88
  }
89
89
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hitimes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 1.0.0
5
5
  platform: x86-mswin32-60
6
6
  authors:
7
7
  - Jeremy Hinegardner
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-02-19 00:00:00 -07:00
12
+ date: 2009-06-12 00:00:00 -06:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -18,7 +18,7 @@ dependencies:
18
18
  version_requirement:
19
19
  version_requirements: !ruby/object:Gem::Requirement
20
20
  requirements:
21
- - - ">="
21
+ - - ~>
22
22
  - !ruby/object:Gem::Version
23
23
  version: 0.8.1
24
24
  version:
@@ -28,11 +28,21 @@ dependencies:
28
28
  version_requirement:
29
29
  version_requirements: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: 0.0.5
34
34
  version:
35
- description: Hitimes is a fast, high resolution timer library for recording performance metrics. It uses the appropriate C method calls for each system to get the highest granularity time increments possible. It currently supports any system with the POSIX call clock_gettime(), Mac OS X and Windows. Using Hitimes can be faster than using a series of Time.new calls, and it will have a much higher granularity. It is definitely faster than using Process.times.
35
+ - !ruby/object:Gem::Dependency
36
+ name: json
37
+ type: :development
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: 1.1.3
44
+ version:
45
+ description: "Hitimes is a fast, high resolution timer library for recording performance metrics. It uses the appropriate C method calls for each system to get the highest granularity time increments possible. It currently supports any of the following systems: * any system with the POSIX call <tt>clock_gettime()</tt>, * Mac OS X * Windows Using Hitimes can be faster than using a series of +Time.new+ calls, and it will have a much higher granularity. It is definitely faster than using +Process.times+."
36
46
  email: jeremy@copiousfreetime.org
37
47
  executables: []
38
48
 
@@ -42,10 +52,13 @@ extra_rdoc_files:
42
52
  - README
43
53
  - HISTORY
44
54
  - LICENSE
55
+ - lib/hitimes/metric.rb
45
56
  - lib/hitimes/mutexed_stats.rb
46
57
  - lib/hitimes/paths.rb
47
58
  - lib/hitimes/stats.rb
48
- - lib/hitimes/timer.rb
59
+ - lib/hitimes/timed_metric.rb
60
+ - lib/hitimes/timed_value_metric.rb
61
+ - lib/hitimes/value_metric.rb
49
62
  - lib/hitimes/version.rb
50
63
  - lib/hitimes.rb
51
64
  - ext/hitimes_ext.c
@@ -68,18 +81,24 @@ files:
68
81
  - ext/extconf.rb
69
82
  - ext/rbconfig-mingw.rb
70
83
  - ext/rbconfig.rb
84
+ - lib/hitimes/metric.rb
71
85
  - lib/hitimes/mutexed_stats.rb
72
86
  - lib/hitimes/paths.rb
73
87
  - lib/hitimes/stats.rb
74
- - lib/hitimes/timer.rb
88
+ - lib/hitimes/timed_metric.rb
89
+ - lib/hitimes/timed_value_metric.rb
90
+ - lib/hitimes/value_metric.rb
75
91
  - lib/hitimes/version.rb
76
92
  - lib/hitimes.rb
77
93
  - spec/interval_spec.rb
94
+ - spec/metric_spec.rb
78
95
  - spec/mutex_stats_spec.rb
79
96
  - spec/paths_spec.rb
80
97
  - spec/spec_helper.rb
81
98
  - spec/stats_spec.rb
82
- - spec/timer_spec.rb
99
+ - spec/timed_metric_spec.rb
100
+ - spec/timed_value_metric_spec.rb
101
+ - spec/value_metric_spec.rb
83
102
  - spec/version_spec.rb
84
103
  - README
85
104
  - HISTORY
data/lib/hitimes/timer.rb DELETED
@@ -1,223 +0,0 @@
1
- #--
2
- # Copyright (c) 2008 Jeremy Hinegardner
3
- # All rights reserved. See LICENSE and/or COPYING for details.
4
- #++
5
-
6
- require 'hitimes'
7
- require 'hitimes_ext'
8
-
9
- module Hitimes
10
- #
11
- # A Timer combines together an Interval and a Stats object to provide
12
- # aggregate information about timings.
13
- #
14
- # A Timer has many of the same methods as an Interval and would be used in
15
- # preference to an Interval in those situations where you want to track
16
- # statistics about the item you are monitoring.
17
- #
18
- class Timer
19
-
20
- # holds all the statistics
21
- attr_reader :stats
22
-
23
- class << self
24
-
25
- #
26
- # :call-seq:
27
- # Timer.now -> Timer
28
- #
29
- # Return a newly allocated Timer that has already been started
30
- #
31
- def now
32
- t = Timer.new
33
- t.start
34
- return t
35
- end
36
-
37
- #
38
- # :call-seq:
39
- # Timer.measure { ... } -> Float
40
- #
41
- # Return the number of seconds that a block of code took to
42
- # execute.
43
- #
44
- def measure( &block )
45
- Interval.measure { yield }
46
- end
47
- end
48
-
49
- #
50
- # :call-seq:
51
- # Timer.new -> Timer
52
- #
53
- def initialize
54
- @stats = Stats.new
55
- @current_interval = nil
56
- end
57
-
58
- #
59
- # :call-seq:
60
- # timer.current_interval -> Interval
61
- #
62
- # Return the current interval, if one doesn't exist create one.
63
- #
64
- def current_interval
65
- @current_interval ||= Interval.new
66
- end
67
-
68
- #
69
- # :call-seq:
70
- # timer.running? -> true or false
71
- #
72
- # return whether or not the timer is currently running.
73
- #
74
- def running?
75
- current_interval.running?
76
- end
77
-
78
- #
79
- # :call-seq:
80
- # timer.start -> nil
81
- #
82
- # Start the current timer, if the current timer is already started, then
83
- # this is a noop.
84
- #
85
- def start
86
- current_interval.start unless running?
87
- nil
88
- end
89
-
90
- #
91
- # :call-seq:
92
- # timer.stop -> Float or nil
93
- #
94
- # Stop the current timer. This updates the stats and removes the current
95
- # interval. If the timer is not running then this is a noop. If the
96
- # timer was stopped then the duration of the last Interval is returned. If
97
- # the timer was already stopped then false is returned.
98
- #
99
- def stop
100
- if running? then
101
- d = current_interval.stop
102
- @current_interval = nil
103
- stats.update( d )
104
- return d
105
- end
106
- return false
107
- end
108
-
109
- #
110
- # :call-seq:
111
- # timer.measure { ... } -> Float
112
- #
113
- # Measure the execution of a block and add those stats to the running stats.
114
- #
115
- def measure( &block )
116
- t = 0.0
117
- begin
118
- start
119
- yield
120
- ensure
121
- t = stop
122
- end
123
- return t
124
- end
125
-
126
- #
127
- # :call-seq:
128
- # timer.split -> Flaot
129
- #
130
- # Split the current timer. Essentially, mark a split time. This means
131
- # stop the current interval and create a new interval, but make sure
132
- # that the new interval lines up exactly, timewise, behind the previous
133
- # interval.
134
- #
135
- # If the timer is running, then split returns the duration of the previous
136
- # interval, i.e. the split-time. If the timer is not running, nothing
137
- # happens and false is returned.
138
- #
139
- def split
140
- if running? then
141
- next_interval = current_interval.split
142
- d = current_interval.duration
143
- stats.update( d )
144
- @current_interval = next_interval
145
- return d
146
- end
147
- return false
148
- end
149
-
150
- #
151
- # :call-seq:
152
- # timer.sum -> Float
153
- # timer.duration -> Float
154
- #
155
- # The total time the timer has been measuring.
156
- #
157
- def sum
158
- stats.sum
159
- end
160
- alias duration sum
161
-
162
- #
163
- # :call-seq:
164
- # timer.mean -> Float
165
- #
166
- # The mean value of all the the stopped intervals. The current interval, if
167
- # it is still running, is not included.
168
- #
169
- def mean
170
- stats.mean
171
- end
172
-
173
- #
174
- # :call-seq:
175
- # timer.rate -> Float
176
- #
177
- # Return the rate of the states, which is the count / duration
178
- #
179
- def rate
180
- stats.rate
181
- end
182
-
183
- #
184
- # :call-seq:
185
- # timer.stddev -> Float
186
- #
187
- # The standard deviation of all the intervals
188
- #
189
- def stddev
190
- stats.stddev
191
- end
192
-
193
- #
194
- # :call-seq:
195
- # timer.count -> Integer
196
- #
197
- # The count of intervals in this timer
198
- #
199
- def count
200
- stats.count
201
- end
202
-
203
- #
204
- # :call-seq:
205
- # timer.max -> Float
206
- #
207
- # The maximum duration of all the intervals this Timer has seen
208
- #
209
- def max
210
- stats.max
211
- end
212
-
213
- #
214
- # :call-seq:
215
- # timer.min -> Float
216
- #
217
- # The minimum duration of all the intervals this Timer has seen
218
- #
219
- def min
220
- stats.min
221
- end
222
- end
223
- end
data/spec/timer_spec.rb DELETED
@@ -1,105 +0,0 @@
1
- require File.expand_path( File.join( File.dirname( __FILE__ ), "spec_helper.rb" ) )
2
-
3
- require 'hitimes/timer'
4
-
5
- describe Hitimes::Timer do
6
-
7
- it "knows if it is running or not" do
8
- t = Hitimes::Timer.new
9
- t.should_not be_running
10
- t.start
11
- t.should be_running
12
- t.stop
13
- t.should_not be_running
14
- end
15
-
16
- it "#split returns the last duration and the timer is still running" do
17
- t = Hitimes::Timer.now
18
- d = t.split
19
- t.should be_running
20
- d.should > 0
21
- t.count.should == 1
22
- t.duration.should == d
23
- end
24
-
25
- it "#stop returns false if called more than once in a row" do
26
- t = Hitimes::Timer.new
27
- t.start
28
- t.stop.should > 0
29
- t.stop.should == false
30
- end
31
-
32
- it "does not count a currently running interval as an interval in calculations" do
33
- t = Hitimes::Timer.new
34
- t.start
35
- t.count.should == 0
36
- t.split
37
- t.count.should == 1
38
- end
39
-
40
- it "#split called on a stopped timer does nothing" do
41
- t = Hitimes::Timer.new
42
- t.start
43
- t.stop
44
- t.split.should == false
45
- end
46
-
47
- it "calculates the mean of the durations" do
48
- t = Hitimes::Timer.new
49
- 2.times { t.start ; sleep 0.05 ; t.stop }
50
- t.mean.should > 0.04
51
- end
52
-
53
- it "calculates the rate of the counts " do
54
- t = Hitimes::Timer.new
55
- 5.times { t.start ; sleep 0.05 ; t.stop }
56
- t.rate.should > 19.0
57
- end
58
-
59
-
60
- it "calculates the stddev of the durations" do
61
- t = Hitimes::Timer.new
62
- 2.times { t.start ; sleep 0.05 ; t.stop }
63
- t.stddev.should > 0.0
64
- end
65
-
66
- it "returns 0.0 for stddev if there is no data" do
67
- t = Hitimes::Timer.new
68
- t.stddev.should == 0.0
69
- end
70
-
71
- it "retuns 0.0 for mean if there is no data" do
72
- Hitimes::Timer.new.mean.should == 0.0
73
- end
74
-
75
- it "keeps track of the min value" do
76
- t = Hitimes::Timer.new
77
- 2.times { t.start ; sleep 0.05 ; t.stop }
78
- t.min.should > 0
79
- end
80
-
81
- it "keeps track of the max value" do
82
- t = Hitimes::Timer.new
83
- 2.times { t.start ; sleep 0.05 ; t.stop }
84
- t.max.should > 0
85
- end
86
-
87
- it "can create an already running timer" do
88
- t = Hitimes::Timer.now
89
- t.should be_running
90
- end
91
-
92
- it "can measure a block of code's execution time" do
93
- dur = Hitimes::Timer.measure { sleep 0.05 }
94
- dur.should > 0.025
95
- end
96
-
97
- it "can measuer a block of code from an instance" do
98
- t = Hitimes::Timer.new
99
- 3.times { t.measure { sleep 0.05 } }
100
- t.duration.should > 0.14
101
- t.count.should == 3
102
- end
103
-
104
- end
105
-