sampling_prof 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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