schwad_performance_logger 0.3.1 → 0.3.2

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: 912ce10f567df0801f90fb5acf0c19262b9bd3a8c263fcb03518a1e3b9e75713
4
- data.tar.gz: 7504dbcafbd7d595e37c9e7a4afe45df6c23a01aefd0bc492a583342b747d198
3
+ metadata.gz: dd6d203c9729e56ed7684650aa2fa88d9f20265f6d98db56eeff1d5a95aef1b1
4
+ data.tar.gz: dfcbec9237c8928e7becf1bbf13c52d9955abade5fa11dc10ecec4dd8047e2bc
5
5
  SHA512:
6
- metadata.gz: 374b2cc008a159510090fc19d0a54402e1c080ab4a2e0afff493c11225dde239de02b3a3c2ab8b3adffdb75f867136996fba391838837093545101fbf311ba71
7
- data.tar.gz: 92f1a3fe5b1a58d8cf5b7aeaaf78f9ab6fa5010c8911fc7d0fed861d115321fe412b5ab69922f597d655657c5c39e2fc345ade6fb25fdfa87bf069cd7f940ee8
6
+ metadata.gz: c7d454c9f5954b58c3326f1a60dac72a0d092a4b8e39b1a50160013f53cae011523ca53fe8591d49e702466c7b0d5683f3e2266426e6efa2b4900c40ca947ad2
7
+ data.tar.gz: caa3f2a8fea167cef1fb66ff35c6ede2c7264853a5a7a1b4318983bb62536e55fc1a2736156c46a8975812e2781a9fb748d88e704584453e853771c7887bba93
@@ -3,6 +3,8 @@ require 'csv'
3
3
  require 'logger'
4
4
  require 'get_process_mem'
5
5
  require 'benchmark/ips'
6
+ require 'objspace'
7
+ require 'memory_profiler'
6
8
  require 'schwad_performance_logger/schwad_performance_logger'
7
9
 
8
10
  module SchwadPerformanceLogger
@@ -15,13 +17,14 @@ module SchwadPerformanceLogger
15
17
  end
16
18
 
17
19
  def self.ips
18
- Benchmark.ips do |x|
19
- x.report("PerformanceLogMethod") do
20
- suppress_output do
20
+ suppress_output do
21
+ @result = Benchmark.ips do |x|
22
+ x.report("PerformanceLogMethod") do
21
23
  yield
22
24
  end
23
25
  end
24
26
  end
27
+ @result
25
28
  end
26
29
 
27
30
  def self.time
@@ -36,6 +39,42 @@ module SchwadPerformanceLogger
36
39
  puts "Average runtime #{@length_of_time.sum / 10.0} seconds. Max time #{@length_of_time.max}.seconds"
37
40
  end
38
41
 
42
+ def self.allocate_count
43
+ # All objects allocated in block
44
+ suppress_output do
45
+ GC.disable
46
+ before = ObjectSpace.count_objects
47
+ yield
48
+ after = ObjectSpace.count_objects
49
+ after.each { |k,v| after[k] = v - before[k] }
50
+ after[:T_HASH] -= 1 # probe effect - we created the before hash.
51
+ after[:FREE] += 1 # same
52
+ GC.enable
53
+ @result = after.reject { |k,v| v == 0 }
54
+ end
55
+ @result
56
+ end
57
+
58
+ def self.all_objects
59
+ ObjectSpace.each_object.
60
+ map(&:class).
61
+ each_with_object(Hash.new(0)) { |e, h| h[e] += 1 }.
62
+ sort_by { |k,v| v }
63
+ end
64
+
65
+ def self.objects_by_size
66
+ ObjectSpace.count_objects_size
67
+ end
68
+
69
+ def self.profile_memory
70
+ suppress_output do
71
+ @report = MemoryProfiler.report do
72
+ yield
73
+ end
74
+ end
75
+ @report.pretty_print
76
+ end
77
+
39
78
  private
40
79
 
41
80
  def self.suppress_output
@@ -49,3 +88,5 @@ module SchwadPerformanceLogger
49
88
  $stderr.reopen(original_stderr)
50
89
  end
51
90
  end
91
+
92
+ SPL = SchwadPerformanceLogger
@@ -1,3 +1,3 @@
1
1
  module SchwadPerformanceLogger
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.2"
3
3
  end
@@ -24,6 +24,7 @@ Gem::Specification.new do |spec|
24
24
 
25
25
  spec.add_dependency "get_process_mem"
26
26
  spec.add_dependency "benchmark-ips"
27
+ spec.add_dependency "memory_profiler"
27
28
 
28
29
  spec.add_development_dependency "bundler", "~> 1.16"
29
30
  spec.add_development_dependency "rake", "~> 10.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: schwad_performance_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Schwaderer
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-09-05 00:00:00.000000000 Z
11
+ date: 2019-09-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: get_process_mem
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: memory_profiler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: bundler
43
57
  requirement: !ruby/object:Gem::Requirement