pubid 2.0.0.pre.alpha.43 → 2.0.0.pre.alpha.45

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4c915fac429239e42864c114fd0dca2785ad263d1627c89ee39a6f3c256715e3
4
- data.tar.gz: c0be866761e0cd25618b3a64de4b31a3cf411224cf3fa36777d252b62b94c38b
3
+ metadata.gz: d6899d53fcf1708eacd4c4955c1005369f54fcbfd8dbbbaf73ab417c71fdfa1b
4
+ data.tar.gz: 2c194ebf70e57cc7e840f7eec013eb0e4073261ba150a9f6bb94d0234a032d74
5
5
  SHA512:
6
- metadata.gz: 95dd99ebb2fd768ad3722805233f1cfb9ae7787a576fdb02c5848d978340dc4367266065213381335ea5c5149d40489ea2614df075c98354290f3b816ac9f77f
7
- data.tar.gz: 2bc35c15d575a6952cf820d7ede48fb0439ccd4bd181a4c9cd5d2a5231c945520363be3d2000676c9ec52b03eece14c3f082ba1625ede01115208e83451f2bf8
6
+ metadata.gz: '047988bdc5488d32b23196662207015cc4fe728fe8dcdc43dde35f6041593a9e32e1b7eab22f35491a583193eb5fd74464e7e065c39a5e497178ec8c36fdc173'
7
+ data.tar.gz: b752b405f2664ea6246886f8f0d888a56ca6da898b5a05b03b6355b02d46d787760630ae19792f1eeacd13c018c5e1eb02e3a6c585f938118f56d4c5f2147484
data/lib/pubid/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Pubid
4
- VERSION = "2.0.0.pre.alpha.43"
4
+ VERSION = "2.0.0.pre.alpha.45"
5
5
  end
@@ -0,0 +1,68 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "benchmark"
4
+
5
+ namespace :benchmark do
6
+ desc "Parse throughput per flavor over the testsuite corpus " \
7
+ "(PUBID_TESTSUITE_PATH=<dir>, FLAVOR=ieee,iso, LIMIT=N)"
8
+ task :corpus do
9
+ require "pubid"
10
+
11
+ corpus_dir = ENV["PUBID_TESTSUITE_PATH"] ||
12
+ File.expand_path("../../../pubid-testsuite/tests", __dir__)
13
+ unless Dir.exist?(corpus_dir)
14
+ abort "corpus not found at #{corpus_dir} — set PUBID_TESTSUITE_PATH " \
15
+ "to a pubid-testsuite checkout's tests/ directory"
16
+ end
17
+
18
+ limit = ENV["LIMIT"]&.to_i
19
+ dir_to_flavor = { "tgpp" => "3gpp" }
20
+ flavors = if ENV["FLAVOR"]
21
+ ENV["FLAVOR"].split(",").map(&:strip)
22
+ else
23
+ Dir.children(corpus_dir)
24
+ .select { |name| File.directory?(File.join(corpus_dir, name)) && !name.start_with?("_") }
25
+ .sort
26
+ end
27
+
28
+ Pubid.eager_load_flavors!
29
+
30
+ rows = flavors.filter_map do |dir_name|
31
+ flavor = (dir_to_flavor[dir_name] || dir_name).to_sym
32
+ mod = Pubid::Registry.get(flavor)
33
+ next unless mod
34
+
35
+ cases = Pubid::Conformance::Corpus.cases(dir_name, corpus_dir)
36
+ inputs = cases.filter_map { |c| c.representations&.human || c.input }
37
+ inputs = inputs.first(limit) if limit && limit.positive?
38
+ next if inputs.empty?
39
+
40
+ failures = 0
41
+ elapsed = ::Benchmark.realtime do
42
+ inputs.each do |input|
43
+ mod.parse(input)
44
+ rescue StandardError
45
+ failures += 1
46
+ end
47
+ end
48
+ rate = elapsed.zero? ? 0.0 : inputs.size / elapsed
49
+ { flavor: dir_name, cases: inputs.size, failures: failures,
50
+ seconds: elapsed, rate: rate }
51
+ end
52
+
53
+ rows.sort_by! { |row| -row[:rate] }
54
+ total_cases = rows.sum { |row| row[:cases] }
55
+ total_seconds = rows.sum { |row| row[:seconds] }
56
+
57
+ puts format("%-14s %8s %8s %10s %12s", "flavor", "cases", "failed", "seconds", "parses/sec")
58
+ rows.each do |row|
59
+ puts format("%-14s %8d %8d %10.3f %12.1f", row[:flavor], row[:cases],
60
+ row[:failures], row[:seconds], row[:rate])
61
+ end
62
+ puts format("%-14s %8d %8s %10.3f %12.1f", "TOTAL", total_cases, "",
63
+ total_seconds, total_seconds.zero? ? 0.0 : total_cases / total_seconds)
64
+ puts
65
+ puts "ruby #{RUBY_VERSION}; parsanol #{Gem.loaded_specs['parsanol']&.version}; " \
66
+ "pubid #{Pubid::VERSION}"
67
+ end
68
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pubid
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.pre.alpha.43
4
+ version: 2.0.0.pre.alpha.45
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
@@ -1047,6 +1047,7 @@ files:
1047
1047
  - lib/pubid/xsf/renderer.rb
1048
1048
  - lib/pubid/xsf/urn_generator.rb
1049
1049
  - lib/pubid/xsf/urn_parser.rb
1050
+ - lib/tasks/benchmark.rake
1050
1051
  - lib/tasks/conformance.rake
1051
1052
  - lib/tasks/docs.rake
1052
1053
  - lib/tasks/export.rake