fiddlesticks 0.1.0
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 +7 -0
- data/lib/fiddlesticks/os.rb +17 -0
- data/lib/fiddlesticks.rb +46 -0
- metadata +60 -0
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
|
data/lib/fiddlesticks.rb
ADDED
@@ -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: []
|