benchmeth 0.1.1 → 0.2.0
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.
- checksums.yaml +5 -5
- data/CHANGELOG.md +7 -2
- data/LICENSE.txt +1 -1
- data/README.md +13 -4
- data/lib/benchmeth/version.rb +1 -1
- data/lib/benchmeth.rb +11 -8
- metadata +11 -77
- data/.gitignore +0 -14
- data/Gemfile +0 -4
- data/Rakefile +0 -8
- data/benchmeth.gemspec +0 -25
- data/test/benchmeth_test.rb +0 -12
- data/test/test_helper.rb +0 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 02f90c97b8afdc34db17a600c5927231d4ca14cedb2680041952695789daa14c
|
4
|
+
data.tar.gz: 159e262d33720193f70d30cadb0d4ca6908894e87130ab4faeb70daa70c7b96e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b9ef7c3f9ade012da933b74ae7da18a696f7a6b9339191970ee43a78e295ee83563410c2e06bf6ea0d6b0b25727ff8fcbc85c9a1fcd9227b2c1325292703ac5e
|
7
|
+
data.tar.gz: c203a49b6235877692c839449d478838f25aaa6525d4f76fed4c22376d40fc674ec4dec720d7121e8883a15be77b2eba971b57cf32d377917556084884dfaa78
|
data/CHANGELOG.md
CHANGED
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -29,7 +29,7 @@ end
|
|
29
29
|
Add this line to your application’s Gemfile:
|
30
30
|
|
31
31
|
```ruby
|
32
|
-
gem
|
32
|
+
gem "benchmeth"
|
33
33
|
```
|
34
34
|
|
35
35
|
## How to Use
|
@@ -50,9 +50,9 @@ end
|
|
50
50
|
|
51
51
|
To call a method without benchmarking, append `_without_benchmark` to the name.
|
52
52
|
|
53
|
-
##
|
53
|
+
## Active Support Notifications
|
54
54
|
|
55
|
-
You can switch to
|
55
|
+
You can switch to Active Support notifications with:
|
56
56
|
|
57
57
|
```ruby
|
58
58
|
Benchmeth.use_notifications = true
|
@@ -61,7 +61,7 @@ Benchmeth.use_notifications = true
|
|
61
61
|
And subscribe with:
|
62
62
|
|
63
63
|
```ruby
|
64
|
-
ActiveSupport::Notifications.
|
64
|
+
ActiveSupport::Notifications.monotonic_subscribe "benchmark.benchmeth" do |*args|
|
65
65
|
event = ActiveSupport::Notifications::Event.new(*args)
|
66
66
|
puts "%s : %d ms" % [event.payload[:name], event.duration]
|
67
67
|
end
|
@@ -75,3 +75,12 @@ Everyone is encouraged to help improve this project. Here are a few ways you can
|
|
75
75
|
- Fix bugs and [submit pull requests](https://github.com/ankane/benchmeth/pulls)
|
76
76
|
- Write, clarify, or fix documentation
|
77
77
|
- Suggest or add new features
|
78
|
+
|
79
|
+
To get started with development:
|
80
|
+
|
81
|
+
```sh
|
82
|
+
git clone https://github.com/ankane/benchmeth.git
|
83
|
+
cd benchmeth
|
84
|
+
bundle install
|
85
|
+
bundle exec rake test
|
86
|
+
```
|
data/lib/benchmeth/version.rb
CHANGED
data/lib/benchmeth.rb
CHANGED
@@ -5,22 +5,25 @@ $benchmeth_main = self
|
|
5
5
|
|
6
6
|
module Benchmeth
|
7
7
|
class << self
|
8
|
-
attr_accessor :use_notifications
|
8
|
+
attr_accessor :use_notifications, :on_benchmark_block
|
9
9
|
end
|
10
10
|
self.use_notifications = false
|
11
|
-
|
12
|
-
DEFAULT_BLOCK = lambda do |method, realtime|
|
11
|
+
self.on_benchmark_block = lambda do |method, realtime|
|
13
12
|
puts "%s : %d ms" % [method, realtime * 1000]
|
14
13
|
end
|
15
14
|
|
16
15
|
def self.on_benchmark(&block)
|
17
16
|
if block_given?
|
18
|
-
|
17
|
+
self.on_benchmark_block = block
|
19
18
|
else
|
20
|
-
|
19
|
+
self.on_benchmark_block
|
21
20
|
end
|
22
21
|
end
|
23
22
|
|
23
|
+
def self.monotonic_time
|
24
|
+
Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
25
|
+
end
|
26
|
+
|
24
27
|
module ClassMethods
|
25
28
|
def benchmark(*method_names)
|
26
29
|
method_names.each do |method_name|
|
@@ -45,9 +48,9 @@ module Benchmeth
|
|
45
48
|
send(:"#{method_name}_without_benchmark", *args, &block)
|
46
49
|
end
|
47
50
|
else
|
48
|
-
start_time =
|
51
|
+
start_time = Benchmeth.monotonic_time
|
49
52
|
result = send(:"#{method_name}_without_benchmark", *args, &block)
|
50
|
-
realtime =
|
53
|
+
realtime = Benchmeth.monotonic_time - start_time
|
51
54
|
Benchmeth.on_benchmark.call("#{method_prefix}#{method_name}", realtime)
|
52
55
|
result
|
53
56
|
end
|
@@ -64,4 +67,4 @@ module Benchmeth
|
|
64
67
|
end
|
65
68
|
|
66
69
|
Object.extend Benchmeth::ClassMethods
|
67
|
-
Object.
|
70
|
+
Object.include Benchmeth::InstanceMethods
|
metadata
CHANGED
@@ -1,94 +1,31 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: benchmeth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kane
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
12
|
-
dependencies:
|
13
|
-
|
14
|
-
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rake
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: minitest
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: activesupport
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
|
-
description: The super easy way to benchmark methods
|
70
|
-
email:
|
71
|
-
- andrew@chartkick.com
|
11
|
+
date: 2022-09-06 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description:
|
14
|
+
email: andrew@ankane.org
|
72
15
|
executables: []
|
73
16
|
extensions: []
|
74
17
|
extra_rdoc_files: []
|
75
18
|
files:
|
76
|
-
- ".gitignore"
|
77
19
|
- CHANGELOG.md
|
78
|
-
- Gemfile
|
79
20
|
- LICENSE.txt
|
80
21
|
- README.md
|
81
|
-
- Rakefile
|
82
|
-
- benchmeth.gemspec
|
83
22
|
- lib/benchmeth.rb
|
84
23
|
- lib/benchmeth/version.rb
|
85
|
-
- test/benchmeth_test.rb
|
86
|
-
- test/test_helper.rb
|
87
24
|
homepage: https://github.com/ankane/benchmeth
|
88
25
|
licenses:
|
89
26
|
- MIT
|
90
27
|
metadata: {}
|
91
|
-
post_install_message:
|
28
|
+
post_install_message:
|
92
29
|
rdoc_options: []
|
93
30
|
require_paths:
|
94
31
|
- lib
|
@@ -96,18 +33,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
96
33
|
requirements:
|
97
34
|
- - ">="
|
98
35
|
- !ruby/object:Gem::Version
|
99
|
-
version: '
|
36
|
+
version: '2.7'
|
100
37
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
38
|
requirements:
|
102
39
|
- - ">="
|
103
40
|
- !ruby/object:Gem::Version
|
104
41
|
version: '0'
|
105
42
|
requirements: []
|
106
|
-
|
107
|
-
|
108
|
-
signing_key:
|
43
|
+
rubygems_version: 3.3.7
|
44
|
+
signing_key:
|
109
45
|
specification_version: 4
|
110
46
|
summary: The super easy way to benchmark methods
|
111
|
-
test_files:
|
112
|
-
- test/benchmeth_test.rb
|
113
|
-
- test/test_helper.rb
|
47
|
+
test_files: []
|
data/.gitignore
DELETED
data/Gemfile
DELETED
data/Rakefile
DELETED
data/benchmeth.gemspec
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
lib = File.expand_path("../lib", __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require "benchmeth/version"
|
5
|
-
|
6
|
-
Gem::Specification.new do |spec|
|
7
|
-
spec.name = "benchmeth"
|
8
|
-
spec.version = Benchmeth::VERSION
|
9
|
-
spec.authors = ["Andrew Kane"]
|
10
|
-
spec.email = ["andrew@chartkick.com"]
|
11
|
-
spec.summary = "The super easy way to benchmark methods"
|
12
|
-
spec.description = "The super easy way to benchmark methods"
|
13
|
-
spec.homepage = "https://github.com/ankane/benchmeth"
|
14
|
-
spec.license = "MIT"
|
15
|
-
|
16
|
-
spec.files = `git ls-files -z`.split("\x0")
|
17
|
-
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
18
|
-
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
-
spec.require_paths = ["lib"]
|
20
|
-
|
21
|
-
spec.add_development_dependency "bundler"
|
22
|
-
spec.add_development_dependency "rake"
|
23
|
-
spec.add_development_dependency "minitest"
|
24
|
-
spec.add_development_dependency "activesupport"
|
25
|
-
end
|
data/test/benchmeth_test.rb
DELETED
data/test/test_helper.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
require "bundler/setup"
|
2
|
-
Bundler.require(:default)
|
3
|
-
require "minitest/autorun"
|
4
|
-
require "minitest/pride"
|
5
|
-
require "active_support"
|
6
|
-
|
7
|
-
class Car
|
8
|
-
def start(speed)
|
9
|
-
sleep(1)
|
10
|
-
end
|
11
|
-
benchmark :start
|
12
|
-
|
13
|
-
def boom(speed)
|
14
|
-
sleep(1)
|
15
|
-
end
|
16
|
-
benchmark :boom #, payload: -> (speed) { speed * 10000000 }
|
17
|
-
|
18
|
-
def self.boom2
|
19
|
-
sleep(1)
|
20
|
-
end
|
21
|
-
class << self
|
22
|
-
benchmark :boom2
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
ActiveSupport::Notifications.subscribe "benchmark.benchmeth" do |*args|
|
27
|
-
event = ActiveSupport::Notifications::Event.new(*args)
|
28
|
-
puts "[AS] %s : %d ms" % [event.payload[:name], event.duration]
|
29
|
-
end
|
30
|
-
|
31
|
-
# Benchmeth.use_notifications = true
|