memory_profiler 1.0.1 → 1.0.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 +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +12 -3
- data/lib/memory_profiler/autorun.rb +17 -0
- data/lib/memory_profiler/cli.rb +24 -26
- data/lib/memory_profiler/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a33279b5aa11573ac4eb1c99c14d8ec0ac944827da175b6eef03d77bc57c652f
|
4
|
+
data.tar.gz: dc21db4963eb3840031d72de3b095a1a3414265dac0cd7df06de0c83ef0b95ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 421e253a198c2bc3881f57ac9f016bf69a5644f96eef211c1073442ce45b6a79021c3af2cdd77a8f916607080127d96a991c7c4fcd7b650ef107dd93161233ee
|
7
|
+
data.tar.gz: 8582b18f48088f242734d353ddd86a09ee9e2a1b2bb1ccdd1e066dd45ed29da2ef3417f2b1a82667c3863445358464f73fdc89e1e715c621d627469fc7b39be4
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -32,14 +32,23 @@ There are two ways to use `memory_profiler`:
|
|
32
32
|
### Command Line
|
33
33
|
|
34
34
|
The easiest way to use memory_profiler is via the command line, which requires no modifications to your program. The basic usage is:
|
35
|
+
|
36
|
+
```
|
37
|
+
$ ruby-memory-profiler [options] run [--] command [command-options]
|
35
38
|
```
|
36
|
-
|
39
|
+
|
40
|
+
Example:
|
41
|
+
|
42
|
+
```
|
43
|
+
$ ruby-memory-profiler --pretty run -- rubocop --cache false
|
44
|
+
|
45
|
+
$ ruby-memory-profiler --max=10 --pretty run -- ruby notify_users.rb 1 2 3 --quiet
|
37
46
|
```
|
38
|
-
Where `script.rb` is the program you want to profile.
|
39
47
|
|
40
48
|
For a full list of options, execute the following command:
|
49
|
+
|
41
50
|
```
|
42
|
-
ruby-memory-profiler -h
|
51
|
+
$ ruby-memory-profiler -h
|
43
52
|
```
|
44
53
|
|
45
54
|
### Convenience API
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "memory_profiler"
|
4
|
+
require "base64"
|
5
|
+
|
6
|
+
def deserialize_hash(data)
|
7
|
+
Marshal.load(Base64.urlsafe_decode64(data)) if data
|
8
|
+
end
|
9
|
+
|
10
|
+
options = deserialize_hash(ENV["MEMORY_PROFILER_OPTIONS"]) || {}
|
11
|
+
|
12
|
+
at_exit do
|
13
|
+
report = MemoryProfiler.stop
|
14
|
+
report.pretty_print(**options)
|
15
|
+
end
|
16
|
+
|
17
|
+
MemoryProfiler.start(options)
|
data/lib/memory_profiler/cli.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "optparse"
|
4
|
+
require "base64"
|
4
5
|
|
5
6
|
module MemoryProfiler
|
6
7
|
class CLI
|
@@ -14,20 +15,6 @@ module MemoryProfiler
|
|
14
15
|
ignore_files: "memory_profiler/lib"
|
15
16
|
}.freeze
|
16
17
|
|
17
|
-
REPORTER_KEYS = [
|
18
|
-
:top, :trace, :ignore_files, :allow_files
|
19
|
-
].freeze
|
20
|
-
|
21
|
-
RESULTS_KEYS = [
|
22
|
-
:to_file, :color_output, :retained_strings, :allocated_strings,
|
23
|
-
:detailed_report, :scale_bytes, :normalize_paths
|
24
|
-
].freeze
|
25
|
-
|
26
|
-
private_constant :BIN_NAME, :VERSION_INFO,:STATUS_SUCCESS, :STATUS_ERROR,
|
27
|
-
:DEFAULTS, :REPORTER_KEYS, :RESULTS_KEYS
|
28
|
-
|
29
|
-
#
|
30
|
-
|
31
18
|
def run(argv)
|
32
19
|
options = {}
|
33
20
|
parser = option_parser(options)
|
@@ -43,17 +30,24 @@ module MemoryProfiler
|
|
43
30
|
return STATUS_ERROR
|
44
31
|
end
|
45
32
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
33
|
+
if script == "run"
|
34
|
+
# We are profiling a command.
|
35
|
+
profile_command(options, argv)
|
36
|
+
else
|
37
|
+
# We are profiling a ruby file.
|
38
|
+
begin
|
39
|
+
MemoryProfiler.start(options)
|
40
|
+
load(script)
|
41
|
+
ensure
|
42
|
+
report = MemoryProfiler.stop
|
43
|
+
report.pretty_print(**options)
|
44
|
+
end
|
45
|
+
STATUS_SUCCESS
|
46
|
+
end
|
50
47
|
rescue OptionParser::InvalidOption, OptionParser::InvalidArgument, OptionParser::MissingArgument => e
|
51
48
|
puts parser
|
52
49
|
puts e.message
|
53
50
|
STATUS_ERROR
|
54
|
-
ensure
|
55
|
-
report = MemoryProfiler.stop
|
56
|
-
report&.pretty_print(**results_options(options))
|
57
51
|
end
|
58
52
|
|
59
53
|
private
|
@@ -66,7 +60,7 @@ module MemoryProfiler
|
|
66
60
|
A Memory Profiler for Ruby
|
67
61
|
|
68
62
|
Usage:
|
69
|
-
#{BIN_NAME} [options]
|
63
|
+
#{BIN_NAME} [options] run [--] command [command-options]
|
70
64
|
BANNER
|
71
65
|
|
72
66
|
opts.separator ""
|
@@ -138,12 +132,16 @@ module MemoryProfiler
|
|
138
132
|
end
|
139
133
|
end
|
140
134
|
|
141
|
-
def
|
142
|
-
|
135
|
+
def profile_command(options, argv)
|
136
|
+
env = {}
|
137
|
+
env["MEMORY_PROFILER_OPTIONS"] = serialize_hash(options) if options.any?
|
138
|
+
gem_path = File.expand_path('../', __dir__)
|
139
|
+
env["RUBYOPT"] = "-I #{gem_path} -r memory_profiler/autorun #{ENV['RUBYOPT']}"
|
140
|
+
exec(env, *argv)
|
143
141
|
end
|
144
142
|
|
145
|
-
def
|
146
|
-
|
143
|
+
def serialize_hash(hash)
|
144
|
+
Base64.urlsafe_encode64(Marshal.dump(hash))
|
147
145
|
end
|
148
146
|
end
|
149
147
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: memory_profiler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sam Saffron
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-06-17 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Memory profiling routines for Ruby 2.5+
|
14
14
|
email:
|
@@ -23,6 +23,7 @@ files:
|
|
23
23
|
- README.md
|
24
24
|
- bin/ruby-memory-profiler
|
25
25
|
- lib/memory_profiler.rb
|
26
|
+
- lib/memory_profiler/autorun.rb
|
26
27
|
- lib/memory_profiler/cli.rb
|
27
28
|
- lib/memory_profiler/helpers.rb
|
28
29
|
- lib/memory_profiler/monochrome.rb
|
@@ -52,7 +53,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
52
53
|
- !ruby/object:Gem::Version
|
53
54
|
version: '0'
|
54
55
|
requirements: []
|
55
|
-
rubygems_version: 3.
|
56
|
+
rubygems_version: 3.5.11
|
56
57
|
signing_key:
|
57
58
|
specification_version: 4
|
58
59
|
summary: Memory profiling routines for Ruby 2.5+
|