fiddlesticks 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1cbd9cdeeef5937f37d6670e4dd0e37fc6c88805
4
+ data.tar.gz: 94edd386365c99ae373dc1b4e1e43a2a02764a99
5
+ SHA512:
6
+ metadata.gz: 0b9113ea6d453abfefe2a2e37acef74474f7bab576f506e05158ba6b14812a8935230e862e23a8ad1509d32612f31049dd19438e951fbe7ab3c6c53c1e0fe1d1
7
+ data.tar.gz: ce15bc2e4b0674f265ba67912d2ea2f60291514211c8fd8698ad5266c330d7016b903f65f2424a4ef7017097ec968a9b3861b75ab094f2bd0f8116dcb50e6444
@@ -0,0 +1,17 @@
1
+ module OS
2
+ def OS.windows?
3
+ (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil
4
+ end
5
+
6
+ def OS.mac?
7
+ (/darwin/ =~ RUBY_PLATFORM) != nil
8
+ end
9
+
10
+ def OS.unix?
11
+ !OS.windows?
12
+ end
13
+
14
+ def OS.linux?
15
+ OS.unix? and not OS.mac?
16
+ end
17
+ end
@@ -0,0 +1,46 @@
1
+ require "benchmark"
2
+ require "color-console"
3
+ require "fiddlesticks/os"
4
+
5
+ class Fiddlesticks
6
+
7
+ def measure(&block)
8
+ no_gc = (ARGV[0] == "--no-gc")
9
+ no_gc ? GC.disable : GC.start
10
+
11
+ memory_before = `ps -o rss= -p #{Process.pid}`.to_i/1024
12
+ gc_stat_before = GC.stat
13
+
14
+ time = Benchmark.realtime do
15
+ yield
16
+ end
17
+
18
+ unless no_gc
19
+ GC.start(full_mark: true, immediate_sweep: true, immediate_mark: false)
20
+ end
21
+
22
+ gc_stat_after = GC.stat
23
+ memory_after = `ps -o rss= -p #{Process.pid}`.to_i/1024
24
+
25
+ if OS.windows?
26
+ total_memory = "Support coming soon"
27
+ elsif OS.mac?
28
+ total_memory = "%d GB" % (`sysctl hw.memsize`.split(" ").last.to_i/1024/1024/1000)
29
+ elsif OS.linux?
30
+ total_memory = %x(free).split(" ")[7].to_i/1024
31
+ else
32
+ total_memory = "OS Not Found!"
33
+ end
34
+
35
+ memory_used = "%d MB" % (memory_after - memory_before)
36
+
37
+ gc = no_gc ? "disabled" : "enabled"
38
+ gc_count = gc_stat_after[:count] - gc_stat_before[:count]
39
+
40
+
41
+ header = ["Ruby Version", "GC", "GC Sweeps", "Total Memory", "Memory Used", "Time"]
42
+ data = [ RUBY_VERSION, gc, gc_count, total_memory, memory_used, time.round(2)]
43
+
44
+ Console.display_table([header, data], width: 100, col_sep: "|", row_sep: "-")
45
+ end
46
+ end
metadata ADDED
@@ -0,0 +1,60 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fiddlesticks
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Björn Grunde
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-05-16 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: color-console
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: Fiddlesticks accepts a block of code and willl show the memory used.
28
+ This is great to find bottlenecks in your codebase or when you optimize your code.
29
+ email: bjorngrunde@live.se
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - lib/fiddlesticks.rb
35
+ - lib/fiddlesticks/os.rb
36
+ homepage:
37
+ licenses:
38
+ - MIT
39
+ metadata: {}
40
+ post_install_message:
41
+ rdoc_options: []
42
+ require_paths:
43
+ - lib
44
+ required_ruby_version: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ required_rubygems_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 1.3.6
54
+ requirements: []
55
+ rubyforge_project:
56
+ rubygems_version: 2.6.11
57
+ signing_key:
58
+ specification_version: 4
59
+ summary: Shows memory usage for a block of code
60
+ test_files: []