railsbench 0.8.4 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +523 -0
- data/INSTALL +18 -9
- data/Manifest.txt +38 -38
- data/README +6 -6
- data/Rakefile +52 -51
- data/bin/railsbench +48 -50
- data/config/benchmarking.rb +18 -5
- data/install.rb +2 -2
- data/lib/railsbench/perf_utils.rb +114 -0
- data/lib/railsbench/railsbenchmark.rb +9 -2
- data/lib/railsbench/version.rb +2 -2
- data/postinstall.rb +12 -0
- data/script/perf_bench +5 -9
- data/script/perf_comp +0 -4
- data/script/perf_comp_gc +7 -11
- data/script/perf_diff +46 -46
- data/script/perf_diff_gc +39 -75
- data/script/perf_html +0 -4
- data/script/perf_plot +0 -4
- data/script/perf_plot_gc +5 -6
- data/script/perf_prof +61 -44
- data/script/perf_run +31 -26
- data/script/perf_run_gc +38 -44
- data/script/perf_tex +1 -5
- data/script/perf_times +2 -6
- data/script/perf_times_gc +0 -4
- data/script/run_urls +7 -6
- data/setup.rb +1585 -1585
- metadata +3 -3
- data/script/perf_loop +0 -38
data/INSTALL
CHANGED
@@ -5,7 +5,7 @@ INSTALLATION
|
|
5
5
|
STEP 1: installing railsbench and PATH modifcation
|
6
6
|
|
7
7
|
If you obtained and installed railsbench as a gem, a script called
|
8
|
-
railsbench is available in
|
8
|
+
railsbench is available in your Ruby bin directory. railsbench is a
|
9
9
|
simple driver for the railsbench scripts, which are located in the gem
|
10
10
|
installation directory. Example:
|
11
11
|
|
@@ -16,10 +16,18 @@ path. The exact place can be found running
|
|
16
16
|
|
17
17
|
railsbench base
|
18
18
|
|
19
|
-
which prints the script directory path.
|
20
|
-
commands can be run directly:
|
19
|
+
which prints the script directory path. Another option is to run
|
21
20
|
|
22
|
-
railsbench
|
21
|
+
eval `railsbench path`
|
22
|
+
|
23
|
+
Since gem packages don't support running postinstall scripts, you will
|
24
|
+
need to make the scripts executable by running
|
25
|
+
|
26
|
+
sudo railsbench postinstall
|
27
|
+
|
28
|
+
After performing these steps, individual commands can be run directly:
|
29
|
+
|
30
|
+
perf_run 100 -bm=all
|
23
31
|
|
24
32
|
The environment variable RAILS_ROOT must be set and point to your apps
|
25
33
|
base directory, in order for railsbench to work properly.
|
@@ -41,15 +49,16 @@ Manual installation:
|
|
41
49
|
|
42
50
|
Automatic installation:
|
43
51
|
|
44
|
-
Run railsbench install. This will perform all of the above steps
|
45
|
-
create a
|
46
|
-
database. In case you are worrying
|
47
|
-
call railsbench install --dry-run
|
52
|
+
Run 'railsbench install'. This will perform all of the above steps
|
53
|
+
and create a configuration named 'benchmarking' in database.yml
|
54
|
+
pointing to your development database. In case you are worrying
|
55
|
+
about possible results, you can call railsbench install --dry-run
|
56
|
+
first.
|
48
57
|
|
49
58
|
|
50
59
|
STEP 3: optional (but highly recommended)
|
51
60
|
|
52
61
|
Patch the ruby garbage collector using rubygc18{45}.patch, depending
|
53
62
|
on your ruby version. Recompile ruby and copy the ruby binary and
|
54
|
-
shared libs to where
|
63
|
+
shared libs to where they were previously installed. See GCPATCH for
|
55
64
|
details on how to influence the patched ruby gc.
|
data/Manifest.txt
CHANGED
@@ -1,38 +1,38 @@
|
|
1
|
-
BUGS
|
2
|
-
CHANGELOG
|
3
|
-
INSTALL
|
4
|
-
install.rb
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
lib/railsbench/
|
15
|
-
lib/railsbench/
|
16
|
-
lib/railsbench/
|
17
|
-
lib/railsbench/
|
18
|
-
lib/railsbench/
|
19
|
-
lib/
|
20
|
-
|
21
|
-
script/
|
22
|
-
script/
|
23
|
-
script/
|
24
|
-
script/
|
25
|
-
script/
|
26
|
-
script/
|
27
|
-
script/perf_plot
|
28
|
-
script/perf_plot_gc
|
29
|
-
script/perf_prof
|
30
|
-
script/perf_run
|
31
|
-
script/perf_run_gc
|
32
|
-
script/perf_tex
|
33
|
-
script/perf_times
|
34
|
-
script/perf_times_gc
|
35
|
-
script/run_urls
|
36
|
-
config/benchmarking.rb
|
37
|
-
config/benchmarks.rb
|
38
|
-
config/benchmarks.yml
|
1
|
+
BUGS
|
2
|
+
CHANGELOG
|
3
|
+
INSTALL
|
4
|
+
install.rb
|
5
|
+
postinstall.rb
|
6
|
+
LICENSE
|
7
|
+
Manifest.txt
|
8
|
+
README
|
9
|
+
Rakefile
|
10
|
+
setup.rb
|
11
|
+
ruby184gc.patch
|
12
|
+
ruby185gc.patch
|
13
|
+
bin/railsbench
|
14
|
+
lib/railsbench/version.rb
|
15
|
+
lib/railsbench/gc_info.rb
|
16
|
+
lib/railsbench/perf_info.rb
|
17
|
+
lib/railsbench/perf_utils.rb
|
18
|
+
lib/railsbench/write_headers_only.rb
|
19
|
+
lib/railsbench/railsbenchmark.rb
|
20
|
+
lib/benchmark.rb
|
21
|
+
script/perf_bench
|
22
|
+
script/perf_comp
|
23
|
+
script/perf_comp_gc
|
24
|
+
script/perf_diff
|
25
|
+
script/perf_diff_gc
|
26
|
+
script/perf_html
|
27
|
+
script/perf_plot
|
28
|
+
script/perf_plot_gc
|
29
|
+
script/perf_prof
|
30
|
+
script/perf_run
|
31
|
+
script/perf_run_gc
|
32
|
+
script/perf_tex
|
33
|
+
script/perf_times
|
34
|
+
script/perf_times_gc
|
35
|
+
script/run_urls
|
36
|
+
config/benchmarking.rb
|
37
|
+
config/benchmarks.rb
|
38
|
+
config/benchmarks.yml
|
data/README
CHANGED
@@ -1,13 +1,13 @@
|
|
1
|
-
Railsbench is a small collection of ruby
|
2
|
-
|
3
|
-
|
1
|
+
Railsbench is a small collection of ruby scripts which make measuring
|
2
|
+
raw performance of rails apps a snap. All tests are run from the
|
3
|
+
command prompt, making performance regression testing easy.
|
4
4
|
|
5
5
|
In addition, a patch for the ruby garbage collector is provided, which
|
6
6
|
can be used to reduce the amount of time spent doing garbage
|
7
7
|
collection, trading memory for speed, as usual (see file GCPATCH for
|
8
|
-
details).
|
9
|
-
|
10
|
-
|
8
|
+
details). Applying the patch will enhance performance data obtained
|
9
|
+
from the various scripts (and some won't run at all without the
|
10
|
+
patch).
|
11
11
|
|
12
12
|
This software was written and conceived by Stefan Kaes. The author can
|
13
13
|
be reached via email: <skaes@gmx.net>. Please send comments, bug
|
data/Rakefile
CHANGED
@@ -1,51 +1,52 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'rake'
|
3
|
-
require 'rake/clean'
|
4
|
-
require 'rake/testtask'
|
5
|
-
require 'rake/packagetask'
|
6
|
-
require 'rake/gempackagetask'
|
7
|
-
require 'rake/rdoctask'
|
8
|
-
require 'rake/contrib/rubyforgepublisher'
|
9
|
-
require 'fileutils'
|
10
|
-
require 'hoe'
|
11
|
-
include FileUtils
|
12
|
-
require File.join(File.dirname(__FILE__), 'lib', 'railsbench', 'version')
|
13
|
-
|
14
|
-
AUTHOR = "Stefan Kaes" # can also be an array of Authors
|
15
|
-
EMAIL = "skaes@gmx.net"
|
16
|
-
DESCRIPTION = "rails benchmarking tools"
|
17
|
-
GEM_NAME = "railsbench" # what ppl will type to install your gem
|
18
|
-
RUBYFORGE_PROJECT = "railsbench" # The unix name for your project
|
19
|
-
HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
|
20
|
-
RELEASE_TYPES = %w(gem tar zip) # can use: gem, tar, zip
|
21
|
-
|
22
|
-
|
23
|
-
NAME = "railsbench"
|
24
|
-
REV = nil # UNCOMMENT IF REQUIRED: File.read(".svn/entries")[/committed-rev="(d+)"/, 1] rescue nil
|
25
|
-
VERS = (ENV['VERSION'] ||= (Railsbench::VERSION::STRING + (REV ? ".#{REV}" : "")))
|
26
|
-
CLEAN.include ['**/.*.sw?', '*.gem', '.config']
|
27
|
-
RDOC_OPTS = ['--quiet', '--title', "railsbench documentation",
|
28
|
-
"--opname", "index.html",
|
29
|
-
"--line-numbers",
|
30
|
-
"--main", "README",
|
31
|
-
"--inline-source"]
|
32
|
-
|
33
|
-
# Generate all the Rake tasks
|
34
|
-
# Run 'rake -T' to see list of generated tasks (from gem root directory)
|
35
|
-
hoe = Hoe.new(GEM_NAME, VERS) do |p|
|
36
|
-
p.author = AUTHOR
|
37
|
-
p.description = DESCRIPTION
|
38
|
-
p.email = EMAIL
|
39
|
-
p.summary = DESCRIPTION
|
40
|
-
p.url = HOMEPATH
|
41
|
-
p.rubyforge_name = RUBYFORGE_PROJECT if RUBYFORGE_PROJECT
|
42
|
-
p.test_globs = ["test/**/*_test.rb"]
|
43
|
-
p.clean_globs = CLEAN #An array of file patterns to delete on clean.
|
44
|
-
p.need_zip = true
|
45
|
-
p.spec_extras = {:has_rdoc => false}
|
46
|
-
|
47
|
-
|
48
|
-
#
|
49
|
-
#p.
|
50
|
-
#p.
|
51
|
-
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
require 'rake/clean'
|
4
|
+
require 'rake/testtask'
|
5
|
+
require 'rake/packagetask'
|
6
|
+
require 'rake/gempackagetask'
|
7
|
+
require 'rake/rdoctask'
|
8
|
+
require 'rake/contrib/rubyforgepublisher'
|
9
|
+
require 'fileutils'
|
10
|
+
require 'hoe'
|
11
|
+
include FileUtils
|
12
|
+
require File.join(File.dirname(__FILE__), 'lib', 'railsbench', 'version')
|
13
|
+
|
14
|
+
AUTHOR = "Stefan Kaes" # can also be an array of Authors
|
15
|
+
EMAIL = "skaes@gmx.net"
|
16
|
+
DESCRIPTION = "rails benchmarking tools"
|
17
|
+
GEM_NAME = "railsbench" # what ppl will type to install your gem
|
18
|
+
RUBYFORGE_PROJECT = "railsbench" # The unix name for your project
|
19
|
+
HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
|
20
|
+
RELEASE_TYPES = %w(gem tar zip) # can use: gem, tar, zip
|
21
|
+
|
22
|
+
|
23
|
+
NAME = "railsbench"
|
24
|
+
REV = nil # UNCOMMENT IF REQUIRED: File.read(".svn/entries")[/committed-rev="(d+)"/, 1] rescue nil
|
25
|
+
VERS = (ENV['VERSION'] ||= (Railsbench::VERSION::STRING + (REV ? ".#{REV}" : "")))
|
26
|
+
CLEAN.include ['**/.*.sw?', '*.gem', '.config']
|
27
|
+
RDOC_OPTS = ['--quiet', '--title', "railsbench documentation",
|
28
|
+
"--opname", "index.html",
|
29
|
+
"--line-numbers",
|
30
|
+
"--main", "README",
|
31
|
+
"--inline-source"]
|
32
|
+
|
33
|
+
# Generate all the Rake tasks
|
34
|
+
# Run 'rake -T' to see list of generated tasks (from gem root directory)
|
35
|
+
hoe = Hoe.new(GEM_NAME, VERS) do |p|
|
36
|
+
p.author = AUTHOR
|
37
|
+
p.description = DESCRIPTION
|
38
|
+
p.email = EMAIL
|
39
|
+
p.summary = DESCRIPTION
|
40
|
+
p.url = HOMEPATH
|
41
|
+
p.rubyforge_name = RUBYFORGE_PROJECT if RUBYFORGE_PROJECT
|
42
|
+
p.test_globs = ["test/**/*_test.rb"]
|
43
|
+
p.clean_globs = CLEAN #An array of file patterns to delete on clean.
|
44
|
+
p.need_zip = true
|
45
|
+
p.spec_extras = {:has_rdoc => false}
|
46
|
+
p.changes = `cat latest_changes`
|
47
|
+
|
48
|
+
# == Optional
|
49
|
+
#p.changes - A description of the release's latest changes.
|
50
|
+
#p.extra_deps - An array of rubygem dependencies.
|
51
|
+
#p.spec_extras - A hash of extra values to set in the gemspec.
|
52
|
+
end
|
data/bin/railsbench
CHANGED
@@ -1,50 +1,48 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
|
4
|
-
base
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
cmd =
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
puts "
|
39
|
-
exit
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
#
|
48
|
-
|
49
|
-
end
|
50
|
-
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
RAILSBENCH_CMDS = %w(
|
4
|
+
base
|
5
|
+
install
|
6
|
+
path
|
7
|
+
perf_comp
|
8
|
+
perf_comp_gc
|
9
|
+
perf_diff
|
10
|
+
perf_diff_gc
|
11
|
+
perf_html
|
12
|
+
perf_plot
|
13
|
+
perf_plot_gc
|
14
|
+
perf_prof
|
15
|
+
perf_run
|
16
|
+
perf_run_gc
|
17
|
+
perf_tex
|
18
|
+
perf_times
|
19
|
+
perf_times_gc
|
20
|
+
postinstall
|
21
|
+
run_urls
|
22
|
+
).inject({}){ |h, cmd| h[cmd] = cmd; h[cmd.sub('perf_', '')] = cmd; h}
|
23
|
+
|
24
|
+
cmd = ARGV.shift
|
25
|
+
unless real_cmd = RAILSBENCH_CMDS[cmd]
|
26
|
+
$stderr.puts "railsbench: unknown command: #{cmd}"
|
27
|
+
$stderr.puts "use one of: #{RAILSBENCH_CMDS.keys.sort.join(', ')}"
|
28
|
+
exit 1
|
29
|
+
end
|
30
|
+
|
31
|
+
RAILSBENCH_BASE = File.expand_path(File.dirname(__FILE__) + '/..')
|
32
|
+
|
33
|
+
case real_cmd
|
34
|
+
when 'base'
|
35
|
+
puts "railsbench is installed in: #{RAILSBENCH_BASE}"
|
36
|
+
exit
|
37
|
+
when 'path'
|
38
|
+
puts "PATH=#{RAILSBENCH_BASE}/script:$PATH"
|
39
|
+
exit
|
40
|
+
when 'install', 'postinstall'
|
41
|
+
load "#{RAILSBENCH_BASE}/#{real_cmd}.rb"
|
42
|
+
else
|
43
|
+
unless ENV['RAILS_ROOT']
|
44
|
+
$stderr.puts "railsbench: RAILS_ROOT not set"
|
45
|
+
exit 1
|
46
|
+
end
|
47
|
+
load "#{RAILSBENCH_BASE}/script/#{real_cmd}"
|
48
|
+
end
|
data/config/benchmarking.rb
CHANGED
@@ -1,8 +1,21 @@
|
|
1
|
-
|
1
|
+
# Settings specified here will take precedence over those in config/environment.rb
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
# Code is not reloaded between requests
|
4
|
+
config.cache_classes = true
|
5
5
|
|
6
|
-
|
7
|
-
|
6
|
+
# Use a different logger for distributed setups
|
7
|
+
# config.logger = SyslogLogger.new
|
8
8
|
|
9
|
+
# Full error reports are disabled and caching is turned on
|
10
|
+
config.action_controller.consider_all_requests_local = false
|
11
|
+
config.action_controller.perform_caching = true
|
12
|
+
config.action_view.cache_template_loading = true
|
13
|
+
|
14
|
+
# we don't want to see controller internals
|
15
|
+
config.action_controller.view_controller_internals = false
|
16
|
+
|
17
|
+
# Enable serving of images, stylesheets, and javascripts from an asset server
|
18
|
+
# config.action_controller.asset_host = "http://assets.example.com"
|
19
|
+
|
20
|
+
# Disable delivery errors if you bad email addresses should just be ignored
|
21
|
+
# config.action_mailer.raise_delivery_errors = false
|
data/install.rb
CHANGED
@@ -44,7 +44,7 @@ __END__
|
|
44
44
|
### End: ***
|
45
45
|
|
46
46
|
# Copyright (C) 2005, 2006 Stefan Kaes
|
47
|
-
#
|
47
|
+
#
|
48
48
|
# This program is free software; you can redistribute it and/or modify
|
49
49
|
# it under the terms of the GNU General Public License as published by
|
50
50
|
# the Free Software Foundation; either version 2 of the License, or
|
@@ -54,7 +54,7 @@ __END__
|
|
54
54
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
55
55
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
56
56
|
# GNU General Public License for more details.
|
57
|
-
#
|
57
|
+
#
|
58
58
|
# You should have received a copy of the GNU General Public License
|
59
59
|
# along with this program; if not, write to the Free Software
|
60
60
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
@@ -63,3 +63,117 @@ def truncate(text, length = 32, truncate_string = "...")
|
|
63
63
|
chars.length > length ? chars[0..(length - l)].join + truncate_string : text
|
64
64
|
end
|
65
65
|
end
|
66
|
+
|
67
|
+
RAILSBENCH_BINDIR = File.expand_path(File.dirname(__FILE__) + "/../../script")
|
68
|
+
|
69
|
+
def enable_gc_stats(file)
|
70
|
+
ENV['RUBY_GC_STATS'] = "1"
|
71
|
+
ENV['RUBY_GC_DATA_FILE'] = file
|
72
|
+
end
|
73
|
+
|
74
|
+
def disable_gc_stats
|
75
|
+
ENV.delete 'RUBY_GC_STATS'
|
76
|
+
ENV.delete 'RUBY_GC_DATA_FILE'
|
77
|
+
end
|
78
|
+
|
79
|
+
def unset_gc_variables
|
80
|
+
%w(RUBY_HEAP_MIN_SLOTS RUBY_GC_MALLOC_LIMIT RUBY_HEAP_FREE_MIN).each{|v| ENV.delete v}
|
81
|
+
end
|
82
|
+
|
83
|
+
def load_gc_variables(gc_spec)
|
84
|
+
File.open_or_die("#{ENV['RAILS_ROOT']}/config/#{gc_spec}.gc").each_line do |line|
|
85
|
+
ENV[$1] = $2 if line =~ /^(.*)=(.*)$/
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def set_gc_variables(argv)
|
90
|
+
gc_spec = nil
|
91
|
+
argv.each{|arg| gc_spec=$1 if arg =~ /-gc=([^ ]*)/}
|
92
|
+
|
93
|
+
if gc_spec
|
94
|
+
load_gc_variables(gc_spec)
|
95
|
+
else
|
96
|
+
unset_gc_variables
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
def benchmark_file_name(benchmark, config_name, prefix=nil, suffix=nil)
|
101
|
+
perf_data_dir = (ENV['RAILS_PERF_DATA'] ||= ENV['HOME'])
|
102
|
+
date = Time.now.strftime '%m-%d'
|
103
|
+
suffix = ".#{suffix}" if suffix
|
104
|
+
ENV['RAILS_BENCHMARK_FILE'] =
|
105
|
+
if config_name
|
106
|
+
"#{perf_data_dir}/#{date}.#{benchmark}.#{config_name}#{suffix}.txt"
|
107
|
+
else
|
108
|
+
"#{perf_data_dir}/perf_run#{prefix}.#{benchmark}#{suffix}.txt"
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
def quote_arguments(argv)
|
113
|
+
argv.map{|a| a.include?(' ') ? "'#{a}'" : a.to_s}.join(' ')
|
114
|
+
end
|
115
|
+
|
116
|
+
def perf_run(script, iterations, options, raw_data_file)
|
117
|
+
perf_runs = (ENV['RAILS_PERF_RUNS'] ||= "3").to_i
|
118
|
+
|
119
|
+
disable_gc_stats
|
120
|
+
set_gc_variables([iterations, options])
|
121
|
+
|
122
|
+
perf_options = "#{iterations} #{options}"
|
123
|
+
null = (RUBY_PLATFORM =~ /win32/i) ? 'nul' : '/dev/null'
|
124
|
+
|
125
|
+
perf_cmd = "ruby #{RAILSBENCH_BINDIR}/perf_bench #{perf_options}"
|
126
|
+
print_cmd = "ruby #{RAILSBENCH_BINDIR}/perf_times #{raw_data_file}"
|
127
|
+
|
128
|
+
puts "benchmarking #{perf_runs} runs with options #{perf_options}"
|
129
|
+
|
130
|
+
File.open(raw_data_file, "w"){ |f| f.puts perf_cmd }
|
131
|
+
perf_runs.times do
|
132
|
+
system("#{perf_cmd} >#{null}") || die("#{script}: #{perf_cmd} returned #{$?}")
|
133
|
+
end
|
134
|
+
File.open(raw_data_file, "a" ){|f| f.puts }
|
135
|
+
|
136
|
+
unset_gc_variables
|
137
|
+
system(print_cmd) || die("#{script}: #{print_cmd} returned #{$?}")
|
138
|
+
end
|
139
|
+
|
140
|
+
def perf_run_gc(script, iterations, options, raw_data_file)
|
141
|
+
warmup = "-warmup"
|
142
|
+
warmup = "" if options =~ /-warmup/
|
143
|
+
|
144
|
+
enable_gc_stats(raw_data_file)
|
145
|
+
set_gc_variables([options])
|
146
|
+
|
147
|
+
perf_options = "#{iterations} #{warmup} #{options}"
|
148
|
+
null = (RUBY_PLATFORM =~ /win32/) ? 'nul' : '/dev/null'
|
149
|
+
|
150
|
+
perf_cmd = "ruby #{RAILSBENCH_BINDIR}/run_urls #{perf_options} >#{null}"
|
151
|
+
print_cmd = "ruby #{RAILSBENCH_BINDIR}/perf_times_gc #{raw_data_file}"
|
152
|
+
|
153
|
+
puts "benchmarking GC performance with options #{perf_options}"
|
154
|
+
puts
|
155
|
+
|
156
|
+
system(perf_cmd) || die("#{script}: #{perf_cmd} returned #{$?}")
|
157
|
+
|
158
|
+
disable_gc_stats
|
159
|
+
unset_gc_variables
|
160
|
+
system(print_cmd) || die("#{script}: #{print_cmd} returned #{$?}")
|
161
|
+
end
|
162
|
+
|
163
|
+
__END__
|
164
|
+
|
165
|
+
# Copyright (C) 2005, 2006 Stefan Kaes
|
166
|
+
#
|
167
|
+
# This program is free software; you can redistribute it and/or modify
|
168
|
+
# it under the terms of the GNU General Public License as published by
|
169
|
+
# the Free Software Foundation; either version 2 of the License, or
|
170
|
+
# (at your option) any later version.
|
171
|
+
#
|
172
|
+
# This program is distributed in the hope that it will be useful,
|
173
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
174
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
175
|
+
# GNU General Public License for more details.
|
176
|
+
#
|
177
|
+
# You should have received a copy of the GNU General Public License
|
178
|
+
# along with this program; if not, write to the Free Software
|
179
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|