bench_bloc 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 617d39bcbe4e48ece874b3d7f8116bb9d80d22fcfba8b08262d5345b4bfa507b
4
- data.tar.gz: 507db8edf55082d8aae8106d54f052fa94730e1bc3d05b59ca5d1aa9d497d8fe
3
+ metadata.gz: 55b6504674d2622b357441daca27585985d35ba9bed2ddae283b87342115a6eb
4
+ data.tar.gz: ae8fad42e481289c479ed59f759fc5baad493a90ea31ac41a3682a24d67a9def
5
5
  SHA512:
6
- metadata.gz: 6c7d1574b0cf3039eb433beb39df34b17f79ce9e07257b2c70f2e680e310f542db777f28ba37dc4cb34d24fc1b85949c4d1d1ed380f5918395957050fab069da
7
- data.tar.gz: f32b8dc3a02a527f2a8178f80070129f20340a23db3c5d941c8fcd28efc59a528c68d1c8a3b039dd1fbafb0b9195854b1e497f295deabac77e8ee02a964e9e72
6
+ metadata.gz: a40bbf1b230d04771c9653dfa38ce445687ee27b32eb96937e1cbad993565e794e1825e41439b0dbd062c70be2e6a24579250d1b747b27dd90a761c67e8d217c
7
+ data.tar.gz: 0e622168ab6dac7eaa33dd16e3f52632e9540dcfe0095d05fba12d23aa5aa3a1a77f476ab0bca5c778fb2577b6f3af399253a9e1ba6f282c7c0bbd7de0609dbc
Binary file
data/bench_bloc.gemspec CHANGED
@@ -1,4 +1,3 @@
1
-
2
1
  lib = File.expand_path("../lib", __FILE__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require "bench_bloc/version"
data/lib/bench_bloc.rb CHANGED
@@ -1,6 +1,52 @@
1
1
  require "bench_bloc/version"
2
+ require 'optparse'
2
3
 
3
4
  module BenchBloc
4
5
  class Error < StandardError; end
5
- # Your code goes here...
6
+
7
+ def log_results results, title
8
+ log = Logger.new("../log/benchmarks.log")
9
+ results.sort! { |a,b| b.real <=> a.real }
10
+ formatted_results = results.map { |res| format_result(res) }
11
+ header = "\n---\n\t#{title}\n"
12
+ summary = "\tTotal Time: #{summarize_real_time(results).round(2)} seconds\n\n"
13
+ log.info(header + summary + formatted_results.join("\n"))
14
+ end
15
+
16
+ def log_ruby_prof_results
17
+ # prof = RubyProf::Profile.new()
18
+ # prof.exclude_common_methods!
19
+ # validator = ValidationRules::TsValidatorService.new(ts)
20
+ # complex_rules = validator.get_complex_validation_rules
21
+ # binding.pry
22
+ # results = prof.profile { validator.run_complex_vr(complex_rules[0]) }
23
+ # log_prof_results results
24
+ end
25
+
26
+ def summarize_real_time results
27
+ results.inject(0) do |agg, res|
28
+ agg + res.real
29
+ end
30
+ end
31
+
32
+ def format_result result
33
+ "\t\t#{result.label}\n\t\t\t#{result.real.round(2)} seconds"
34
+ end
35
+
36
+ def bench_tasks
37
+ Rake.application.tasks.select do |task|
38
+ task.name.starts_with?("bench") &&
39
+ !task.name.ends_with?("_util") &&
40
+ task.name != "bench:all"
41
+ end
42
+ end
43
+
44
+ def option_parser
45
+ OptionParser.new do |opts|
46
+ opts.banner = "Usage: rake bench:* [options]"
47
+ opts.on("-r", "--ruby-prof", "Print a RubyProf report") do |rp|
48
+ @options[:ruby_prof] = rp
49
+ end
50
+ end
51
+ end
6
52
  end
@@ -1,3 +1,3 @@
1
1
  module BenchBloc
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -0,0 +1,83 @@
1
+ # TODO: Implement OptionsParser ie --rubyprof
2
+ require 'rake'
3
+ require 'pry'
4
+ require 'benchmark'
5
+ require "#{Rails.root}/benchmarks/bench_utils"
6
+
7
+ CONFIG_FILES=FileList['benchmarks/*.block.rb']
8
+
9
+ def put_namespace key, namespace
10
+ namespace key do
11
+ namespace.keys.each do |ns_key|
12
+ if is_task? namespace[ns_key]
13
+ put_task ns_key, namespace[ns_key]
14
+ else
15
+ put_namespace ns_key, namespace[ns_key]
16
+ end
17
+ end
18
+ end
19
+ end
20
+
21
+ # TODO: Add a ruby-prof method here if argument is passed
22
+ def put_task key, new_task
23
+ desc new_task[:desc]
24
+ task key => :environment do
25
+ to_profs = [new_task[:to_prof].call].flatten
26
+ results = Benchmark.bm do |x|
27
+ to_profs.each do |tp|
28
+ x.report(new_task[:label].call(tp)) do
29
+ new_task[:prof].call(tp)
30
+ end
31
+ end
32
+ end
33
+ log_results results, "Benchmark Complex Validation Rules on Small Timesheet"
34
+ end
35
+ # format_ruby_prof(run_ruby_prof(new_task[:prof], tp)) if @options[:ruby_prof] == true
36
+ end
37
+
38
+ # def run_ruby_prof lam, args
39
+ # RubyProf.start
40
+ # lam.call args
41
+ # RubyProf.end
42
+ # end
43
+
44
+ # def format_ruby_prof res
45
+ # "Formatted Ruby Prof Results: #{res}"
46
+ # end
47
+
48
+ def is_task? obj
49
+ obj.keys.any?(:to_prof)
50
+ end
51
+
52
+ CONFIG_FILES.each do |f|
53
+ config = eval File.read(f)
54
+ config.keys.each do |key|
55
+ namespace :bench do
56
+ put_namespace key, config[key]
57
+ desc "Options parser for bench tasks"
58
+ task parse_options_util: :environment do
59
+ @options = {}
60
+ option_parser.parse!
61
+ option_parser.parse!
62
+ end
63
+ desc "Clear Tests"
64
+ task clear_tests_util: :environment do
65
+ at_exit do
66
+ test_ts = Timesheet.where("general_remarks LIKE '%BENCHTEST%'")
67
+ puts "Clearing #{test_ts.count} test timesheets"
68
+ test_ts.destroy_all
69
+ end
70
+ end
71
+ desc "Run all benchmarks"
72
+ task all: :environment do
73
+ bench_tasks.each(&:execute)
74
+ Rake::Task["bench:clear_tests_util"].invoke
75
+ end
76
+ end
77
+ end
78
+ end
79
+
80
+ bench_tasks.each do |task|
81
+ Rake::Task[task.name]
82
+ .enhance(['bench:parse_options_util', 'bench:clear_tests_util'])
83
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bench_bloc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy
@@ -68,11 +68,13 @@ files:
68
68
  - LICENSE.txt
69
69
  - README.md
70
70
  - Rakefile
71
+ - bench_bloc-0.1.0.gem
71
72
  - bench_bloc.gemspec
72
73
  - bin/console
73
74
  - bin/setup
74
75
  - lib/bench_bloc.rb
75
76
  - lib/bench_bloc/version.rb
77
+ - lib/tasks/bench.rake
76
78
  homepage: https://github.com/jdpaterson/bench_bloc
77
79
  licenses:
78
80
  - MIT