schwad_performance_logger 0.3.1 → 0.3.2

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: 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