benchparser 0.1.0 → 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 +4 -4
- data/README.md +6 -4
- data/lib/benchparser.rb +11 -1
- data/lib/benchparser/parsers/go.rb +25 -18
- data/lib/benchparser/result.rb +2 -1
- data/lib/benchparser/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d5146fbb6371f43e64a473a8725526782ec133f9
|
4
|
+
data.tar.gz: d5c64740baabb51dc437fce3fe02cf7df26ba1fb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b69037f54ace08d33b265d6e4dd31254b6223a07792290b352f53ecfd603df2c7f2388bee59816fd97a0d5c51e5e2dff3c1531f5349edafe3426fe29c8fe14a5
|
7
|
+
data.tar.gz: 5bf6ddbb7d9078637b1cb6279582be2fb76146732ee43874f64870d834e4fb59662d65e05c8c49bdc89fc23a8c60b453cd880831cac2e33253207abc7b976d9d
|
data/README.md
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
[](https://travis-ci.com/drish/benchparser)
|
2
|
+
[](https://badge.fury.io/rb/benchparser)
|
2
3
|
|
3
4
|
# Benchparser
|
4
5
|
|
@@ -13,7 +14,7 @@ gem 'benchparser'
|
|
13
14
|
|
14
15
|
### Usage
|
15
16
|
|
16
|
-
Golang benchmark standard output
|
17
|
+
Golang benchmark standard output
|
17
18
|
|
18
19
|
```text
|
19
20
|
goos: darwin
|
@@ -28,10 +29,10 @@ ok github.com/drish/parser 9.960s
|
|
28
29
|
```ruby
|
29
30
|
require 'benchparser'
|
30
31
|
|
31
|
-
parsed = Bp.parse(data)
|
32
|
+
parsed = Bp.parse(:go, data)
|
32
33
|
parsed.language # go
|
33
|
-
parsed.goos # darwin
|
34
|
-
parsed.pkg # darwin
|
34
|
+
parsed.configs[:goos] # darwin
|
35
|
+
parsed.configs[:pkg] # darwin
|
35
36
|
parsed.functions.count # 1
|
36
37
|
parsed.functions.first[:iterations] # 1000000000
|
37
38
|
parsed.functions.first[:ns_op] # 2.48
|
@@ -44,6 +45,7 @@ parsed.functions.first[:allocs_op] # 0
|
|
44
45
|
|
45
46
|
- [ ] Ruby [benchmark](https://ruby-doc.org/stdlib-2.5.0/libdoc/benchmark/rdoc/)
|
46
47
|
- [ ] Python [timeit](https://docs.python.org/2/library/timeit.html)
|
48
|
+
- [ ] Rust [Criterion](https://github.com/bheisler/criterion.rs)
|
47
49
|
|
48
50
|
## Contributing
|
49
51
|
|
data/lib/benchparser.rb
CHANGED
@@ -9,9 +9,19 @@ require "benchparser/parsers/ts"
|
|
9
9
|
|
10
10
|
module Benchparser
|
11
11
|
class ParseError < StandardError; end
|
12
|
+
class UnsupportedLang < StandardError; end
|
12
13
|
|
13
14
|
class << self
|
14
|
-
|
15
|
+
|
16
|
+
def parse(lang, data)
|
17
|
+
|
18
|
+
raise UnsupportedLang if lang.nil?
|
19
|
+
case lang.to_sym
|
20
|
+
when :go
|
21
|
+
Benchparser::Parsers::Go.parse(data)
|
22
|
+
else
|
23
|
+
raise UnsupportedLang.new("unsupported language #{lang.to_s}")
|
24
|
+
end
|
15
25
|
end
|
16
26
|
end
|
17
27
|
end
|
@@ -1,39 +1,46 @@
|
|
1
1
|
module Benchparser
|
2
2
|
module Parsers
|
3
3
|
class Go < Benchparser::Result
|
4
|
-
attr_accessor :goos, :goarch, :pkg
|
5
4
|
|
6
5
|
def initialize(raw_data)
|
7
6
|
super(language: 'go')
|
8
7
|
lines = raw_data.split("\n")
|
8
|
+
|
9
9
|
lines.each_with_index do |line, index|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
@goarch = line.sub('goarch: ', '') if line.include?('goarch')
|
15
|
-
when 2
|
16
|
-
@pkg = line.sub('pkg: ', '') if line.include?('pkg')
|
17
|
-
else
|
10
|
+
|
11
|
+
return if line.include?('PASS') or line.include?('ok')
|
12
|
+
|
13
|
+
if line.start_with?('Benchmark')
|
18
14
|
parsed_line = parse_function(line)
|
19
15
|
@functions << parsed_line unless parsed_line.nil?
|
16
|
+
else
|
17
|
+
config = line.split(':')
|
18
|
+
@configs[config.first.to_sym] = config[1].strip unless config.first.nil? or config[1].nil?
|
20
19
|
end
|
21
20
|
end
|
22
21
|
end
|
23
22
|
|
23
|
+
# finds the metric by calculating the index of the metric - 1
|
24
|
+
def get_metric(line_array, metric)
|
25
|
+
metric_index = line_array.find_index(metric)
|
26
|
+
metric_index.nil? ? nil : line_array[metric_index - 1]
|
27
|
+
end
|
28
|
+
|
24
29
|
def parse_function(line)
|
25
|
-
|
26
|
-
|
27
|
-
{
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
30
|
+
|
31
|
+
line_array = line.split(' ')
|
32
|
+
parsed = {}
|
33
|
+
parsed[:name] = line_array.first
|
34
|
+
parsed[:iterations] = line_array[1]
|
35
|
+
parsed[:ns_op] = get_metric(line_array, 'ns/op')
|
36
|
+
parsed[:allocs_op] = get_metric(line_array, 'allocs/op')
|
37
|
+
parsed[:mb_s] = get_metric(line_array, 'MB/s')
|
38
|
+
parsed[:bytes_op] = get_metric(line_array, 'B/op')
|
39
|
+
parsed
|
34
40
|
end
|
35
41
|
|
36
42
|
class << self
|
43
|
+
|
37
44
|
def parse(raw_data)
|
38
45
|
raise Bp::ParserError.new if raw_data.nil?
|
39
46
|
Bp::Parsers::Go.new(raw_data)
|
data/lib/benchparser/result.rb
CHANGED
data/lib/benchparser/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: benchparser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Derich Pacheco
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-09-
|
11
|
+
date: 2019-09-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -102,5 +102,5 @@ rubyforge_project:
|
|
102
102
|
rubygems_version: 2.6.14
|
103
103
|
signing_key:
|
104
104
|
specification_version: 4
|
105
|
-
summary: Benchparser - benchmark output parser
|
105
|
+
summary: Benchparser - benchmark output parser for multiple languages
|
106
106
|
test_files: []
|