sampling_prof 0.0.1 → 0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5f8441784afcf541b8d966e7dc4c20d42f2397fc
4
- data.tar.gz: f6b3b7907a5969f99e8618664d4c618623c93753
3
+ metadata.gz: de9f6f4f7f21a996d3ecf1e922aa11fb43f8d2f2
4
+ data.tar.gz: d4ddca1249128c70847bf9a48e32a2698b34f178
5
5
  SHA512:
6
- metadata.gz: ba5b7fac7a6fb71331d2c607938cd551a7d5de4588834c1ae7afd9bb0bf1a52cbec947693d185ab2736c550a12a42cb3de1da7ad028127e221db5c6af658c94a
7
- data.tar.gz: cdf2248bbf978644aa72cbef7a5e85feb4c5eebc2b4da383ea9befa3796b91cac1c46cfee836728fc447734338247738cdc98b038551e162f4734fb32a5fa06f
6
+ metadata.gz: 134db8e55f4756f8fde632e248021677befa69be81ec14b677b44220639cde040acca92781b32fbc327d3e836adf843b0d27f0e5e158290eae58f701ca4c818c
7
+ data.tar.gz: 43e57db9317d42ded4597ae974bd13671ae3c87bbfc766275c403d1eae06039a6473860f232049d6f09e1e72db04608f35f9a64bd5bda7a481932d0d9abce9a6
Binary file
data/lib/sampling_prof.rb CHANGED
@@ -3,23 +3,27 @@ require 'sampling_prof.jar'
3
3
  class SamplingProf
4
4
  DEFAULT_OUTPUT_FILE = 'profile.txt'
5
5
 
6
- def profile(path=nil, &block)
7
- start(path)
6
+ attr_accessor :output_file
7
+
8
+ def output_file
9
+ @output_file ||= DEFAULT_OUTPUT_FILE
10
+ end
11
+
12
+ def profile(&block)
13
+ start
8
14
  yield if block_given?
9
15
  ensure
10
16
  stop if block_given?
11
17
  end
12
18
 
13
- def start(path=nil)
14
- __start__(&output(path))
19
+ def start
20
+ __start__(&output)
15
21
  end
16
22
 
17
- def output(path=nil)
18
- path ||= DEFAULT_OUTPUT_FILE
23
+ def output
19
24
  lambda do |data|
20
25
  nodes, counts, call_graph = data
21
- # puts "[DEBUG]data => #{data.inspect}"
22
- File.open(path, 'w') do |f|
26
+ File.open(output_file, 'w') do |f|
23
27
  nodes.each do |node|
24
28
  # node name, node id
25
29
  f.puts node.join(',')
@@ -38,22 +42,23 @@ class SamplingProf
38
42
  end
39
43
  end
40
44
 
41
- def report(type, file=DEFAULT_OUTPUT_FILE)
42
- file ||= DEFAULT_OUTPUT_FILE
43
- nodes, counts, call_graph = File.read(file).split("\n\n")
45
+ def report(type, output=$stdout)
46
+ nodes, counts, call_graph = File.read(output_file).split("\n\n")
44
47
  nodes = nodes.split("\n").inject({}) do |ret, l|
45
48
  n, i = l.split(',')
46
49
  ret[i.to_i] = n
47
50
  ret
48
51
  end
52
+
49
53
  counts = counts.split("\n").map do |l|
50
54
  l.split(',').map(&:to_i)
51
55
  end
52
56
  total_count, report = flat_report(nodes, counts)
53
- puts "total counts: #{total_count}"
54
- puts "calls\t%\tname"
57
+
58
+ output.puts "total counts: #{total_count}"
59
+ output.puts "calls\t%\tname"
55
60
  report.first(20).each do |v|
56
- puts v.join("\t")
61
+ output.puts v.join("\t")
57
62
  end
58
63
  end
59
64
 
@@ -64,4 +69,5 @@ class SamplingProf
64
69
  end
65
70
  [total, reports]
66
71
  end
72
+
67
73
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sampling_prof
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Xiao Li
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2014-02-07 00:00:00 Z
12
+ date: 2014-02-08 00:00:00 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake-compiler
@@ -25,7 +25,7 @@ dependencies:
25
25
  type: :development
26
26
  version_requirements: *id001
27
27
  description: |
28
- SamplingProf starts a thread to capture all of ruby threads stacktrace dump.
28
+ SamplingProf is a profiling tool that operates by sampling your running thread stacktrace. The result is statistical approximation, but it allows your code to run near full speed
29
29
 
30
30
  email:
31
31
  - swing1979@gmail.com
@@ -64,6 +64,6 @@ rubyforge_project:
64
64
  rubygems_version: 2.1.9
65
65
  signing_key:
66
66
  specification_version: 4
67
- summary: Simple sampling profiler for JRuby
67
+ summary: Simple sampling profiler on JRuby
68
68
  test_files: []
69
69