railsbench 0.8.4 → 0.9.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.
- 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
|