perftools.rb 0.1.6 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- data/README +6 -0
- data/ext/extconf.rb +17 -7
- data/patches/perftools-debug.patch +2 -2
- data/patches/perftools-osx.patch +2 -2
- data/patches/perftools.patch +31 -32
- data/perftools.rb.gemspec +2 -3
- metadata +2 -3
- data/patches/perftools-static.patch +0 -27
data/README
CHANGED
@@ -139,6 +139,12 @@ google-perftools for ruby code
|
|
139
139
|
|
140
140
|
=== Resources
|
141
141
|
|
142
|
+
GoRuCo 2009 Lightning Talk on perftools.rb
|
143
|
+
http://goruco2009.confreaks.com/30-may-2009-18-35-rejectconf-various-presenters.html at 21:52
|
144
|
+
|
145
|
+
Ilya Grigorik's introduction to perftools.rb
|
146
|
+
http://www.igvita.com/2009/06/13/profiling-ruby-with-googles-perftools/
|
147
|
+
|
142
148
|
Google Perftools
|
143
149
|
http://code.google.com/p/google-perftools/
|
144
150
|
|
data/ext/extconf.rb
CHANGED
@@ -1,8 +1,13 @@
|
|
1
1
|
require 'mkmf'
|
2
|
+
|
3
|
+
if have_func('rb_thread_blocking_region')
|
4
|
+
raise 'Ruby 1.9 is not supported yet'
|
5
|
+
end
|
6
|
+
|
2
7
|
require 'fileutils'
|
3
8
|
require 'net/http'
|
4
9
|
|
5
|
-
url = 'http://google-perftools.googlecode.com/files/google-perftools-1.
|
10
|
+
url = 'http://google-perftools.googlecode.com/files/google-perftools-1.3.tar.gz'
|
6
11
|
perftools = File.basename(url)
|
7
12
|
dir = File.basename(perftools, '.tar.gz')
|
8
13
|
|
@@ -10,9 +15,15 @@ Logging.message "(I'm about to download and compile google-perftools.. this will
|
|
10
15
|
|
11
16
|
FileUtils.mkdir_p('src')
|
12
17
|
|
18
|
+
if proxy = URI(ENV['http_proxy'] || ENV['HTTP_PROXY']) rescue nil
|
19
|
+
proxy_host = proxy.host
|
20
|
+
proxy_port = proxy.port
|
21
|
+
proxy_user, proxy_pass = proxy.userinfo.split(/:/) if proxy.userinfo
|
22
|
+
end
|
23
|
+
|
13
24
|
Dir.chdir('src') do
|
14
25
|
unless File.exists?(perftools)
|
15
|
-
Net::HTTP.get_response(URI(url)) do |res|
|
26
|
+
Net::HTTP::Proxy(proxy_host, proxy_port, proxy_user, proxy_pass).get_response(URI(url)) do |res|
|
16
27
|
File.open(perftools, 'wb') do |out|
|
17
28
|
res.read_body do |chunk|
|
18
29
|
out.write(chunk)
|
@@ -25,7 +36,6 @@ Dir.chdir('src') do
|
|
25
36
|
xsystem("tar zxvf #{perftools}")
|
26
37
|
Dir.chdir(dir) do
|
27
38
|
xsystem("patch -p1 < ../../../patches/perftools.patch")
|
28
|
-
xsystem("patch -p1 < ../../../patches/perftools-static.patch")
|
29
39
|
xsystem("patch -p1 < ../../../patches/perftools-osx.patch") if RUBY_PLATFORM =~ /darwin/
|
30
40
|
xsystem("patch -p1 < ../../../patches/perftools-debug.patch")# if ENV['DEBUG']
|
31
41
|
end
|
@@ -37,11 +47,11 @@ Dir.chdir('src') do
|
|
37
47
|
end
|
38
48
|
end
|
39
49
|
|
40
|
-
unless File.exists?('../
|
50
|
+
unless File.exists?('../librubyprofiler.a')
|
41
51
|
Dir.chdir(dir) do
|
42
52
|
xsystem("./configure --disable-heap-profiler --disable-heap-checker --disable-shared")
|
43
53
|
xsystem("make")
|
44
|
-
FileUtils.cp '.libs/libprofiler.a', '../../'
|
54
|
+
FileUtils.cp '.libs/libprofiler.a', '../../librubyprofiler.a'
|
45
55
|
end
|
46
56
|
end
|
47
57
|
end
|
@@ -51,6 +61,6 @@ when /darwin/, /linux/
|
|
51
61
|
CONFIG['LDSHARED'] = "$(CXX) " + CONFIG['LDSHARED'].split[1..-1].join(' ')
|
52
62
|
end
|
53
63
|
|
54
|
-
$libs = append_library($libs, '
|
64
|
+
$libs = append_library($libs, 'rubyprofiler')
|
55
65
|
have_func('rb_during_gc', 'ruby.h')
|
56
|
-
create_makefile 'perftools'
|
66
|
+
create_makefile 'perftools'
|
@@ -1,8 +1,8 @@
|
|
1
1
|
diff --git a/Makefile.in b/Makefile.in
|
2
|
-
index
|
2
|
+
index a7a4fb5..bfa0347 100644
|
3
3
|
--- a/Makefile.in
|
4
4
|
+++ b/Makefile.in
|
5
|
-
@@ -
|
5
|
+
@@ -1067,13 +1067,13 @@ AUTOMAKE = @AUTOMAKE@
|
6
6
|
AWK = @AWK@
|
7
7
|
CC = @CC@
|
8
8
|
CCDEPMODE = @CCDEPMODE@
|
data/patches/perftools-osx.patch
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
diff --git a/Makefile.in b/Makefile.in
|
2
|
-
index
|
2
|
+
index e3690b2..a7a4fb5 100644
|
3
3
|
--- a/Makefile.in
|
4
4
|
+++ b/Makefile.in
|
5
|
-
@@ -
|
5
|
+
@@ -1097,7 +1097,7 @@ INSTALL_DATA = @INSTALL_DATA@
|
6
6
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
7
7
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
8
8
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
data/patches/perftools.patch
CHANGED
@@ -1,5 +1,25 @@
|
|
1
|
+
diff --git a/Makefile.in b/Makefile.in
|
2
|
+
index 8ba85fb..e3690b2 100644
|
3
|
+
--- a/Makefile.in
|
4
|
+
+++ b/Makefile.in
|
5
|
+
@@ -1067,13 +1067,13 @@ AUTOMAKE = @AUTOMAKE@
|
6
|
+
AWK = @AWK@
|
7
|
+
CC = @CC@
|
8
|
+
CCDEPMODE = @CCDEPMODE@
|
9
|
+
-CFLAGS = @CFLAGS@
|
10
|
+
+CFLAGS = @CFLAGS@ -DBUILD_FOR_RUBY -fPIC
|
11
|
+
CPP = @CPP@
|
12
|
+
CPPFLAGS = @CPPFLAGS@
|
13
|
+
CXX = @CXX@
|
14
|
+
CXXCPP = @CXXCPP@
|
15
|
+
CXXDEPMODE = @CXXDEPMODE@
|
16
|
+
-CXXFLAGS = @CXXFLAGS@
|
17
|
+
+CXXFLAGS = @CXXFLAGS@ -DBUILD_FOR_RUBY -fPIC
|
18
|
+
CYGPATH_W = @CYGPATH_W@
|
19
|
+
DEFS = @DEFS@
|
20
|
+
DEPDIR = @DEPDIR@
|
1
21
|
diff --git a/src/pprof b/src/pprof
|
2
|
-
index
|
22
|
+
index 9d4d0e8..a41fcb1 100755
|
3
23
|
--- a/src/pprof
|
4
24
|
+++ b/src/pprof
|
5
25
|
@@ -504,7 +504,8 @@ sub Main() {
|
@@ -12,8 +32,8 @@ index f23786d..21ccd12 100755
|
|
12
32
|
my $profile = $data->{profile};
|
13
33
|
my $pcs = $data->{pcs};
|
14
34
|
my $libs = $data->{libs}; # Info about main program and shared libraries
|
15
|
-
@@ -
|
16
|
-
$
|
35
|
+
@@ -549,6 +550,17 @@ sub Main() {
|
36
|
+
$profile = IgnoreProfile($symbols, $profile, $main::opt_ignore);
|
17
37
|
}
|
18
38
|
|
19
39
|
+ if (-e "$fname.symbols") {
|
@@ -29,12 +49,12 @@ index f23786d..21ccd12 100755
|
|
29
49
|
+
|
30
50
|
my $calls = ExtractCalls($symbols, $profile);
|
31
51
|
|
32
|
-
#
|
52
|
+
# Reduce profiles to required output granularity, and also clean
|
33
53
|
diff --git a/src/profile-handler.cc b/src/profile-handler.cc
|
34
|
-
index
|
54
|
+
index e658d30..370d012 100644
|
35
55
|
--- a/src/profile-handler.cc
|
36
56
|
+++ b/src/profile-handler.cc
|
37
|
-
@@ -
|
57
|
+
@@ -264,6 +264,11 @@ ProfileHandler::~ProfileHandler() {
|
38
58
|
void ProfileHandler::RegisterThread() {
|
39
59
|
SpinLockHolder cl(&control_lock_);
|
40
60
|
|
@@ -46,7 +66,7 @@ index 0a9f54c..5b99a81 100644
|
|
46
66
|
// We try to detect whether timers are being shared by setting a
|
47
67
|
// timer in the first call to this function, then checking whether
|
48
68
|
// it's set in the second call.
|
49
|
-
@@ -
|
69
|
+
@@ -305,6 +310,7 @@ void ProfileHandler::RegisterThread() {
|
50
70
|
StartTimer();
|
51
71
|
break;
|
52
72
|
}
|
@@ -246,7 +266,7 @@ index c51c7b2..21c7669 100644
|
|
246
266
|
}
|
247
267
|
|
248
268
|
diff --git a/src/stacktrace.cc b/src/stacktrace.cc
|
249
|
-
index d158eea..
|
269
|
+
index d158eea..e8509fe 100644
|
250
270
|
--- a/src/stacktrace.cc
|
251
271
|
+++ b/src/stacktrace.cc
|
252
272
|
@@ -52,6 +52,7 @@
|
@@ -254,7 +274,7 @@ index d158eea..e4132fe 100644
|
|
254
274
|
// Some code may do that.
|
255
275
|
|
256
276
|
+#ifndef BUILD_FOR_RUBY
|
257
|
-
#include
|
277
|
+
#include <config.h>
|
258
278
|
#include <google/stacktrace.h>
|
259
279
|
#include "stacktrace_config.h"
|
260
280
|
@@ -69,3 +70,4 @@
|
@@ -262,29 +282,8 @@ index d158eea..e4132fe 100644
|
|
262
282
|
# error Cannot calculate stack trace: will need to write for your environment
|
263
283
|
#endif
|
264
284
|
+#endif
|
265
|
-
|
266
|
-
diff --git a/Makefile.in b/Makefile.in
|
267
|
-
index 1247b91..45179f3 100644
|
268
|
-
--- a/Makefile.in
|
269
|
-
+++ b/Makefile.in
|
270
|
-
@@ -989,13 +989,13 @@ AUTOMAKE = @AUTOMAKE@
|
271
|
-
AWK = @AWK@
|
272
|
-
CC = @CC@
|
273
|
-
CCDEPMODE = @CCDEPMODE@
|
274
|
-
-CFLAGS = @CFLAGS@
|
275
|
-
+CFLAGS = @CFLAGS@ -DBUILD_FOR_RUBY -fPIC
|
276
|
-
CPP = @CPP@
|
277
|
-
CPPFLAGS = @CPPFLAGS@
|
278
|
-
CXX = @CXX@
|
279
|
-
CXXCPP = @CXXCPP@
|
280
|
-
CXXDEPMODE = @CXXDEPMODE@
|
281
|
-
-CXXFLAGS = @CXXFLAGS@
|
282
|
-
+CXXFLAGS = @CXXFLAGS@ -DBUILD_FOR_RUBY -fPIC
|
283
|
-
CYGPATH_W = @CYGPATH_W@
|
284
|
-
DEFS = @DEFS@
|
285
|
-
DEPDIR = @DEPDIR@
|
286
285
|
diff --git a/src/stacktrace_with_context.cc b/src/stacktrace_with_context.cc
|
287
|
-
index
|
286
|
+
index 02f837d..ca5da92 100644
|
288
287
|
--- a/src/stacktrace_with_context.cc
|
289
288
|
+++ b/src/stacktrace_with_context.cc
|
290
289
|
@@ -41,6 +41,7 @@
|
@@ -292,7 +291,7 @@ index f9fc28f..beb7562 100644
|
|
292
291
|
// ATTRIBUTE_NOINLINE.
|
293
292
|
|
294
293
|
+#ifndef BUILD_FOR_RUBY
|
295
|
-
#include
|
294
|
+
#include <config.h>
|
296
295
|
#include <google/stacktrace.h>
|
297
296
|
#include "stacktrace_config.h"
|
298
297
|
@@ -59,3 +60,4 @@ int GetStackTraceWithContext(void** result, int max_depth,
|
data/perftools.rb.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
spec = Gem::Specification.new do |s|
|
2
2
|
s.name = 'perftools.rb'
|
3
|
-
s.version = '0.1.
|
4
|
-
s.date = '2009-06-
|
3
|
+
s.version = '0.1.8'
|
4
|
+
s.date = '2009-06-15'
|
5
5
|
s.rubyforge_project = 'perftools-rb'
|
6
6
|
s.summary = 'google-perftools for ruby code'
|
7
7
|
s.description = 'A sampling profiler for ruby code based on patches to google-perftools'
|
@@ -24,7 +24,6 @@ spec = Gem::Specification.new do |s|
|
|
24
24
|
"ext/perftools.c",
|
25
25
|
"patches/perftools-debug.patch",
|
26
26
|
"patches/perftools-osx.patch",
|
27
|
-
"patches/perftools-static.patch",
|
28
27
|
"patches/perftools.patch",
|
29
28
|
"perftools.rb.gemspec"
|
30
29
|
]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: perftools.rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aman Gupta
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-06-
|
12
|
+
date: 2009-06-15 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -28,7 +28,6 @@ files:
|
|
28
28
|
- ext/perftools.c
|
29
29
|
- patches/perftools-debug.patch
|
30
30
|
- patches/perftools-osx.patch
|
31
|
-
- patches/perftools-static.patch
|
32
31
|
- patches/perftools.patch
|
33
32
|
- perftools.rb.gemspec
|
34
33
|
has_rdoc: true
|
@@ -1,27 +0,0 @@
|
|
1
|
-
diff --git a/Makefile.in b/Makefile.in
|
2
|
-
index 1247b91..e7c5bca 100644
|
3
|
-
--- a/Makefile.in
|
4
|
-
+++ b/Makefile.in
|
5
|
-
@@ -3736,14 +3736,14 @@ uninstall-man: uninstall-man1
|
6
|
-
# (since it does work only in global constructors and destructors).
|
7
|
-
# We just replace the .a with an 'ld-r-ized' version under libtool's
|
8
|
-
# nose.
|
9
|
-
-@WITH_CPU_PROFILER_TRUE@libprofiler.o: libprofiler.la $(libprofiler_la_OBJECTS) $(libprofiler_la_DEPENDENCIES) $(libprofiler_la_LIBADD)
|
10
|
-
-@WITH_CPU_PROFILER_TRUE@ $(CXXLINK) $(libprofiler_la_OBJECTS) $(libprofiler_la_LIBADD)
|
11
|
-
-@WITH_CPU_PROFILER_TRUE@ cp -f "$@" .libs/libprofiler.a
|
12
|
-
-@WITH_CPU_PROFILER_TRUE@profiler_unittest.sh$(EXEEXT): $(top_srcdir)/$(profiler_unittest_sh_SOURCES) \
|
13
|
-
-@WITH_CPU_PROFILER_TRUE@ profiler1_unittest profiler2_unittest \
|
14
|
-
-@WITH_CPU_PROFILER_TRUE@ profiler3_unittest profiler4_unittest
|
15
|
-
-@WITH_CPU_PROFILER_TRUE@ rm -f $@
|
16
|
-
-@WITH_CPU_PROFILER_TRUE@ cp -p $(top_srcdir)/$(profiler_unittest_sh_SOURCES) $@
|
17
|
-
+# @WITH_CPU_PROFILER_TRUE@libprofiler.o: libprofiler.la $(libprofiler_la_OBJECTS) $(libprofiler_la_DEPENDENCIES) $(libprofiler_la_LIBADD)
|
18
|
-
+# @WITH_CPU_PROFILER_TRUE@ $(CXXLINK) $(libprofiler_la_OBJECTS) $(libprofiler_la_LIBADD)
|
19
|
-
+# @WITH_CPU_PROFILER_TRUE@ cp -f "$@" .libs/libprofiler.a
|
20
|
-
+# @WITH_CPU_PROFILER_TRUE@profiler_unittest.sh$(EXEEXT): $(top_srcdir)/$(profiler_unittest_sh_SOURCES) \
|
21
|
-
+# @WITH_CPU_PROFILER_TRUE@ profiler1_unittest profiler2_unittest \
|
22
|
-
+# @WITH_CPU_PROFILER_TRUE@ profiler3_unittest profiler4_unittest
|
23
|
-
+# @WITH_CPU_PROFILER_TRUE@ rm -f $@
|
24
|
-
+# @WITH_CPU_PROFILER_TRUE@ cp -p $(top_srcdir)/$(profiler_unittest_sh_SOURCES) $@
|
25
|
-
|
26
|
-
rpm: dist-gzip packages/rpm.sh packages/rpm/rpm.spec
|
27
|
-
@cd packages && ./rpm.sh ${PACKAGE} ${VERSION}
|