kamal-railsbench 0.9.9.pre

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.
Files changed (54) hide show
  1. data/BUGS +2 -0
  2. data/CHANGELOG +2124 -0
  3. data/GCPATCH +73 -0
  4. data/INSTALL +75 -0
  5. data/LICENSE +222 -0
  6. data/Manifest.txt +53 -0
  7. data/PROBLEMS +56 -0
  8. data/README +337 -0
  9. data/Rakefile +51 -0
  10. data/bin/railsbench +80 -0
  11. data/config/benchmarking.rb +21 -0
  12. data/config/benchmarks.rb +21 -0
  13. data/config/benchmarks.yml +2 -0
  14. data/images/empty.png +0 -0
  15. data/images/minus.png +0 -0
  16. data/images/plus.png +0 -0
  17. data/install.rb +70 -0
  18. data/latest_changes.txt +18 -0
  19. data/lib/benchmark.rb +576 -0
  20. data/lib/railsbench/benchmark.rb +576 -0
  21. data/lib/railsbench/benchmark_specs.rb +63 -0
  22. data/lib/railsbench/gc_info.rb +158 -0
  23. data/lib/railsbench/perf_info.rb +146 -0
  24. data/lib/railsbench/perf_utils.rb +202 -0
  25. data/lib/railsbench/railsbenchmark.rb +640 -0
  26. data/lib/railsbench/version.rb +9 -0
  27. data/lib/railsbench/write_headers_only.rb +15 -0
  28. data/postinstall.rb +12 -0
  29. data/ruby184gc.patch +516 -0
  30. data/ruby185gc.patch +562 -0
  31. data/ruby186gc.patch +564 -0
  32. data/ruby19gc.patch +2425 -0
  33. data/script/convert_raw_data_files +49 -0
  34. data/script/generate_benchmarks +171 -0
  35. data/script/perf_bench +74 -0
  36. data/script/perf_comp +151 -0
  37. data/script/perf_comp_gc +113 -0
  38. data/script/perf_diff +48 -0
  39. data/script/perf_diff_gc +53 -0
  40. data/script/perf_html +103 -0
  41. data/script/perf_plot +225 -0
  42. data/script/perf_plot_gc +254 -0
  43. data/script/perf_prof +87 -0
  44. data/script/perf_run +39 -0
  45. data/script/perf_run_gc +40 -0
  46. data/script/perf_table +104 -0
  47. data/script/perf_tex +58 -0
  48. data/script/perf_times +66 -0
  49. data/script/perf_times_gc +94 -0
  50. data/script/run_urls +57 -0
  51. data/setup.rb +1585 -0
  52. data/test/railsbench_test.rb +11 -0
  53. data/test/test_helper.rb +2 -0
  54. metadata +133 -0
data/GCPATCH ADDED
@@ -0,0 +1,73 @@
1
+ The garbage collector distributed with ruby tries to adapt memory
2
+ usage to the amount of memory used by the program, dynamically growing
3
+ or shrinking the allocated heap as it sees fit.
4
+
5
+ For long running server apps this doesn't really work very well. The
6
+ performance very much depends on the ratio heap size/program size. It
7
+ behaves somewhat erratic: adding code can actually make your program
8
+ run faster.
9
+
10
+ The supplied patch fixes this problem: it allows one to specify the
11
+ initial heap size to start with. Heap size will never drop below the
12
+ initial size. By carefully selecting the initial heap size one can
13
+ decrease startup time and increase throughput of server apps.
14
+
15
+ There are 4 patches for different versions of Ruby:
16
+ rubygc184.patch Ruby 1.8.4 (but will apply to 1.82 as well)
17
+ rubygc185.patch Ruby 1.8.5
18
+ rubygc186.patch Ruby 1.8.6
19
+ rubygc19.patch Ruby 1.9
20
+
21
+ Heap size and other options are controlled through environment
22
+ variables:
23
+
24
+ RUBY_HEAP_MIN_SLOTS
25
+ - the initial heap size in number of slots used
26
+
27
+ RUBY_HEAP_SLOTS_INCREMENT
28
+ - how many additional slots to allocate when Ruby allocates
29
+ new heap slots
30
+
31
+ RUBY_HEAP_SLOTS_GROWTH_FACTOR
32
+ - multiplicator used to increase heap block size for the next
33
+ allocation.
34
+
35
+ RUBY_GC_MALLOC_LIMIT
36
+ - the amount of C data structures which can be allocated
37
+ without triggering a GC (if this is set too low, GC will be
38
+ started even if there are empty slots available)
39
+
40
+ RUBY_HEAP_FREE_MIN
41
+ - number of free slots that should be available after GC
42
+ if fewer slots are available, additional heap will be allocated
43
+ (Ruby >= 1.8.5 ensures the freelist has at least heapsize*0.2 entries)
44
+
45
+ The following values make the patched GC behave like the unpatched GC:
46
+
47
+ RUBY_HEAP_MIN_SLOTS=10000
48
+ RUBY_HEAP_SLOTS_INCREMENT=10000
49
+ RUBY_HEAP_SLOTS_GROWTH_FACTOR=1.8
50
+ RUBY_GC_MALLOC_LIMIT=8000000
51
+ RUBY_HEAP_FREE_MIN=4096
52
+
53
+ Try experimenting with these values. You can use perf_run_gc to find
54
+ out how many slots you need.
55
+
56
+ Memory usage of the ruby interpreter can be observed by setting
57
+ RUBY_GC_STATS=1, before you invoke any of the railsbench commands.
58
+
59
+ Per default, GC data gets written to stderr. You can change this
60
+ behavior by setting environment variable RUBY_GC_DATA_FILE.
61
+
62
+ Additionally, the Ruby module GC gets some new methods:
63
+
64
+ GC.enable_stats - enable GC statistics collection
65
+ GC.disable_stats - disable GC statistics collection
66
+ GC.clear_stats - reset GC statistics
67
+ GC.collections - number of collections since stats have been enabled
68
+ GC.time - GC time used since stats have been enabled (miro seconds)
69
+ GC.dump - dumps current heap topology to the GC log file
70
+ GC.log - log given string to the GC log file
71
+
72
+ railsbench detects whether the patch has been applied and provides
73
+ GC statistics only in this case.
data/INSTALL ADDED
@@ -0,0 +1,75 @@
1
+ ==================================================
2
+ RAILSBENCH INSTALLATION
3
+ ==================================================
4
+
5
+ STEP 1: installing railsbench and PATH modification
6
+ ---------------------------------------------------
7
+
8
+ If you obtained and installed railsbench as a gem, a script called
9
+ railsbench is available in your Ruby bin directory. railsbench is a
10
+ simple driver for the railsbench scripts, which are located in the gem
11
+ installation directory. Example:
12
+
13
+ railsbench perf_run 100 -bm=all
14
+
15
+ Alternatively, add the railsbench script directory to your search
16
+ path. The exact place can be found running
17
+
18
+ railsbench base
19
+
20
+ which prints the script directory path. Another option is to run
21
+
22
+ eval `railsbench path`
23
+
24
+ Since gem packages don't support running postinstall scripts, you will
25
+ need to make the scripts executable by running
26
+
27
+ sudo railsbench postinstall
28
+
29
+ After performing these steps, individual commands can be run directly:
30
+
31
+ perf_run 100 -bm=all
32
+
33
+ The environment variable RAILS_ROOT must be set and point to your apps
34
+ base directory, in order for railsbench to work properly.
35
+
36
+ If you obtained railsbench as a svn checkout, add the railsbench
37
+ script directory to your search path.
38
+
39
+ For bash shells you can use railsbench command completion by adding
40
+ this line code to your .bashrc file:
41
+
42
+ complete -W "`railsbench commands`" -o default railsbench
43
+
44
+
45
+ STEP 2: prepare your application for benchmarking
46
+ -------------------------------------------------
47
+
48
+ Manual installation:
49
+
50
+ Copy benchmarks.rb and benchmarks.yml into $RAILS_ROOT/config and
51
+ edit them to suit your needs. The provided default benchmark.yml
52
+ will run the root URL of your app.
53
+
54
+ Copy benchmarking.rb to $RAILS_ROOT/config/environments and add a
55
+ corresponding section to database.yml.
56
+
57
+ Automatic installation:
58
+
59
+ Run 'railsbench install'. This will perform all of the above steps
60
+ and create a configuration named 'benchmarking' in database.yml
61
+ pointing to your development database. In case you are worrying
62
+ about possible results, you can call railsbench install --dry-run
63
+ first.
64
+
65
+ In either case, run `railsbench generate_benchmarks'. This will create
66
+ a benchmarks.yml file with a benchmark for each controller and action.
67
+
68
+
69
+ STEP 3: optional (but highly recommended)
70
+ -----------------------------------------
71
+
72
+ Patch the ruby garbage collector using rubygc18{45}.patch, depending
73
+ on your ruby version. Recompile ruby and copy the ruby binary and
74
+ shared libs to where they were previously installed. See GCPATCH for
75
+ details on how to influence the patched ruby gc.
data/LICENSE ADDED
@@ -0,0 +1,222 @@
1
+ GNU GENERAL PUBLIC LICENSE
2
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
3
+
4
+ 0. This License applies to any program or other work which contains
5
+ a notice placed by the copyright holder saying it may be distributed
6
+ under the terms of this General Public License. The "Program", below,
7
+ refers to any such program or work, and a "work based on the Program"
8
+ means either the Program or any derivative work under copyright law:
9
+ that is to say, a work containing the Program or a portion of it,
10
+ either verbatim or with modifications and/or translated into another
11
+ language. (Hereinafter, translation is included without limitation in
12
+ the term "modification".) Each licensee is addressed as "you".
13
+
14
+ Activities other than copying, distribution and modification are not
15
+ covered by this License; they are outside its scope. The act of
16
+ running the Program is not restricted, and the output from the Program
17
+ is covered only if its contents constitute a work based on the
18
+ Program (independent of having been made by running the Program).
19
+ Whether that is true depends on what the Program does.
20
+
21
+ 1. You may copy and distribute verbatim copies of the Program's
22
+ source code as you receive it, in any medium, provided that you
23
+ conspicuously and appropriately publish on each copy an appropriate
24
+ copyright notice and disclaimer of warranty; keep intact all the
25
+ notices that refer to this License and to the absence of any warranty;
26
+ and give any other recipients of the Program a copy of this License
27
+ along with the Program.
28
+
29
+ You may charge a fee for the physical act of transferring a copy, and
30
+ you may at your option offer warranty protection in exchange for a fee.
31
+
32
+ 2. You may modify your copy or copies of the Program or any portion
33
+ of it, thus forming a work based on the Program, and copy and
34
+ distribute such modifications or work under the terms of Section 1
35
+ above, provided that you also meet all of these conditions:
36
+
37
+ a) You must cause the modified files to carry prominent notices
38
+ stating that you changed the files and the date of any change.
39
+
40
+ b) You must cause any work that you distribute or publish, that in
41
+ whole or in part contains or is derived from the Program or any
42
+ part thereof, to be licensed as a whole at no charge to all third
43
+ parties under the terms of this License.
44
+
45
+ c) If the modified program normally reads commands interactively
46
+ when run, you must cause it, when started running for such
47
+ interactive use in the most ordinary way, to print or display an
48
+ announcement including an appropriate copyright notice and a
49
+ notice that there is no warranty (or else, saying that you provide
50
+ a warranty) and that users may redistribute the program under
51
+ these conditions, and telling the user how to view a copy of this
52
+ License. (Exception: if the Program itself is interactive but
53
+ does not normally print such an announcement, your work based on
54
+ the Program is not required to print an announcement.)
55
+
56
+ These requirements apply to the modified work as a whole. If
57
+ identifiable sections of that work are not derived from the Program,
58
+ and can be reasonably considered independent and separate works in
59
+ themselves, then this License, and its terms, do not apply to those
60
+ sections when you distribute them as separate works. But when you
61
+ distribute the same sections as part of a whole which is a work based
62
+ on the Program, the distribution of the whole must be on the terms of
63
+ this License, whose permissions for other licensees extend to the
64
+ entire whole, and thus to each and every part regardless of who wrote it.
65
+
66
+ Thus, it is not the intent of this section to claim rights or contest
67
+ your rights to work written entirely by you; rather, the intent is to
68
+ exercise the right to control the distribution of derivative or
69
+ collective works based on the Program.
70
+
71
+ In addition, mere aggregation of another work not based on the Program
72
+ with the Program (or with a work based on the Program) on a volume of
73
+ a storage or distribution medium does not bring the other work under
74
+ the scope of this License.
75
+
76
+ 3. You may copy and distribute the Program (or a work based on it,
77
+ under Section 2) in object code or executable form under the terms of
78
+ Sections 1 and 2 above provided that you also do one of the following:
79
+
80
+ a) Accompany it with the complete corresponding machine-readable
81
+ source code, which must be distributed under the terms of Sections
82
+ 1 and 2 above on a medium customarily used for software interchange; or,
83
+
84
+ b) Accompany it with a written offer, valid for at least three
85
+ years, to give any third party, for a charge no more than your
86
+ cost of physically performing source distribution, a complete
87
+ machine-readable copy of the corresponding source code, to be
88
+ distributed under the terms of Sections 1 and 2 above on a medium
89
+ customarily used for software interchange; or,
90
+
91
+ c) Accompany it with the information you received as to the offer
92
+ to distribute corresponding source code. (This alternative is
93
+ allowed only for noncommercial distribution and only if you
94
+ received the program in object code or executable form with such
95
+ an offer, in accord with Subsection b above.)
96
+
97
+ The source code for a work means the preferred form of the work for
98
+ making modifications to it. For an executable work, complete source
99
+ code means all the source code for all modules it contains, plus any
100
+ associated interface definition files, plus the scripts used to
101
+ control compilation and installation of the executable. However, as a
102
+ special exception, the source code distributed need not include
103
+ anything that is normally distributed (in either source or binary
104
+ form) with the major components (compiler, kernel, and so on) of the
105
+ operating system on which the executable runs, unless that component
106
+ itself accompanies the executable.
107
+
108
+ If distribution of executable or object code is made by offering
109
+ access to copy from a designated place, then offering equivalent
110
+ access to copy the source code from the same place counts as
111
+ distribution of the source code, even though third parties are not
112
+ compelled to copy the source along with the object code.
113
+
114
+ 4. You may not copy, modify, sublicense, or distribute the Program
115
+ except as expressly provided under this License. Any attempt
116
+ otherwise to copy, modify, sublicense or distribute the Program is
117
+ void, and will automatically terminate your rights under this License.
118
+ However, parties who have received copies, or rights, from you under
119
+ this License will not have their licenses terminated so long as such
120
+ parties remain in full compliance.
121
+
122
+ 5. You are not required to accept this License, since you have not
123
+ signed it. However, nothing else grants you permission to modify or
124
+ distribute the Program or its derivative works. These actions are
125
+ prohibited by law if you do not accept this License. Therefore, by
126
+ modifying or distributing the Program (or any work based on the
127
+ Program), you indicate your acceptance of this License to do so, and
128
+ all its terms and conditions for copying, distributing or modifying
129
+ the Program or works based on it.
130
+
131
+ 6. Each time you redistribute the Program (or any work based on the
132
+ Program), the recipient automatically receives a license from the
133
+ original licensor to copy, distribute or modify the Program subject to
134
+ these terms and conditions. You may not impose any further
135
+ restrictions on the recipients' exercise of the rights granted herein.
136
+ You are not responsible for enforcing compliance by third parties to
137
+ this License.
138
+
139
+ 7. If, as a consequence of a court judgment or allegation of patent
140
+ infringement or for any other reason (not limited to patent issues),
141
+ conditions are imposed on you (whether by court order, agreement or
142
+ otherwise) that contradict the conditions of this License, they do not
143
+ excuse you from the conditions of this License. If you cannot
144
+ distribute so as to satisfy simultaneously your obligations under this
145
+ License and any other pertinent obligations, then as a consequence you
146
+ may not distribute the Program at all. For example, if a patent
147
+ license would not permit royalty-free redistribution of the Program by
148
+ all those who receive copies directly or indirectly through you, then
149
+ the only way you could satisfy both it and this License would be to
150
+ refrain entirely from distribution of the Program.
151
+
152
+ If any portion of this section is held invalid or unenforceable under
153
+ any particular circumstance, the balance of the section is intended to
154
+ apply and the section as a whole is intended to apply in other
155
+ circumstances.
156
+
157
+ It is not the purpose of this section to induce you to infringe any
158
+ patents or other property right claims or to contest validity of any
159
+ such claims; this section has the sole purpose of protecting the
160
+ integrity of the free software distribution system, which is
161
+ implemented by public license practices. Many people have made
162
+ generous contributions to the wide range of software distributed
163
+ through that system in reliance on consistent application of that
164
+ system; it is up to the author/donor to decide if he or she is willing
165
+ to distribute software through any other system and a licensee cannot
166
+ impose that choice.
167
+
168
+ This section is intended to make thoroughly clear what is believed to
169
+ be a consequence of the rest of this License.
170
+
171
+ 8. If the distribution and/or use of the Program is restricted in
172
+ certain countries either by patents or by copyrighted interfaces, the
173
+ original copyright holder who places the Program under this License
174
+ may add an explicit geographical distribution limitation excluding
175
+ those countries, so that distribution is permitted only in or among
176
+ countries not thus excluded. In such case, this License incorporates
177
+ the limitation as if written in the body of this License.
178
+
179
+ 9. The Free Software Foundation may publish revised and/or new versions
180
+ of the General Public License from time to time. Such new versions will
181
+ be similar in spirit to the present version, but may differ in detail to
182
+ address new problems or concerns.
183
+
184
+ Each version is given a distinguishing version number. If the Program
185
+ specifies a version number of this License which applies to it and "any
186
+ later version", you have the option of following the terms and conditions
187
+ either of that version or of any later version published by the Free
188
+ Software Foundation. If the Program does not specify a version number of
189
+ this License, you may choose any version ever published by the Free Software
190
+ Foundation.
191
+
192
+ 10. If you wish to incorporate parts of the Program into other free
193
+ programs whose distribution conditions are different, write to the author
194
+ to ask for permission. For software which is copyrighted by the Free
195
+ Software Foundation, write to the Free Software Foundation; we sometimes
196
+ make exceptions for this. Our decision will be guided by the two goals
197
+ of preserving the free status of all derivatives of our free software and
198
+ of promoting the sharing and reuse of software generally.
199
+
200
+ NO WARRANTY
201
+
202
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
203
+ FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
204
+ OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
205
+ PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
206
+ OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
207
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
208
+ TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
209
+ PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
210
+ REPAIR OR CORRECTION.
211
+
212
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
213
+ WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
214
+ REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
215
+ INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
216
+ OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
217
+ TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
218
+ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
219
+ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
220
+ POSSIBILITY OF SUCH DAMAGES.
221
+
222
+ END OF TERMS AND CONDITIONS
@@ -0,0 +1,53 @@
1
+ BUGS
2
+ CHANGELOG
3
+ GCPATCH
4
+ INSTALL
5
+ LICENSE
6
+ Manifest.txt
7
+ PROBLEMS
8
+ README
9
+ Rakefile
10
+ bin/railsbench
11
+ config/benchmarking.rb
12
+ config/benchmarks.rb
13
+ config/benchmarks.yml
14
+ images/empty.png
15
+ images/minus.png
16
+ images/plus.png
17
+ install.rb
18
+ latest_changes.txt
19
+ lib/benchmark.rb
20
+ lib/railsbench/benchmark.rb
21
+ lib/railsbench/benchmark_specs.rb
22
+ lib/railsbench/gc_info.rb
23
+ lib/railsbench/perf_info.rb
24
+ lib/railsbench/perf_utils.rb
25
+ lib/railsbench/railsbenchmark.rb
26
+ lib/railsbench/version.rb
27
+ lib/railsbench/write_headers_only.rb
28
+ postinstall.rb
29
+ ruby184gc.patch
30
+ ruby185gc.patch
31
+ ruby186gc.patch
32
+ ruby19gc.patch
33
+ script/convert_raw_data_files
34
+ script/generate_benchmarks
35
+ script/perf_bench
36
+ script/perf_comp
37
+ script/perf_comp_gc
38
+ script/perf_diff
39
+ script/perf_diff_gc
40
+ script/perf_html
41
+ script/perf_plot
42
+ script/perf_plot_gc
43
+ script/perf_prof
44
+ script/perf_run
45
+ script/perf_run_gc
46
+ script/perf_table
47
+ script/perf_tex
48
+ script/perf_times
49
+ script/perf_times_gc
50
+ script/run_urls
51
+ setup.rb
52
+ test/railsbench_test.rb
53
+ test/test_helper.rb
@@ -0,0 +1,56 @@
1
+ You might experience the problem described below, if your
2
+ benchmarking.rb environment file contains the line
3
+
4
+ config.action_controller.view_controller_internals = false
5
+
6
+
7
+ This is the preferred setting for a production mode config file, but
8
+ can cause problems when a view template tries to access a method only
9
+ available when view_controller_internals is true.
10
+
11
+ If you experierence backtraces like the one below, try the setting
12
+
13
+ config.action_controller.view_controller_internals = true
14
+
15
+ Typical backtrace:
16
+
17
+ ActionView::TemplateError (undefined method `each' for nil:NilClass) on line #1 of app/views/test/param_access_t
18
+ est.rhtml:
19
+ 1: <% for k,v in params %>
20
+ 2: <%= h k %> = <%= h v %>
21
+ 3: <% end %>
22
+ 4:
23
+
24
+ #{RAILS_ROOT}/app/views/test/param_access_test.rhtml:1:in `_run_rhtml_47app47views47test47param_access_test46rhtml'
25
+ c:/home/skaes/svn/trunk12pre/actionpack/lib/action_view/base.rb:326:in `compile_and_render_template'
26
+ c:/home/skaes/svn/trunk12pre/actionpack/lib/action_view/base.rb:301:in `render_template'
27
+ c:/home/skaes/svn/trunk12pre/actionpack/lib/action_view/base.rb:260:in `render_file'
28
+ c:/home/skaes/svn/trunk12pre/actionpack/lib/action_controller/base.rb:806:in `render_file'
29
+ c:/home/skaes/svn/trunk12pre/actionpack/lib/action_controller/base.rb:711:in `render_with_no_layout'
30
+ c:/home/skaes/svn/trunk12pre/actionpack/lib/action_controller/layout.rb:256:in `render_without_benchmark'
31
+ c:/home/skaes/svn/trunk12pre/actionpack/lib/action_controller/benchmarking.rb:50:in `render'
32
+ c:/ruby184/lib/ruby/gems/1.8/gems/railsbench-0.9.2/lib/benchmark.rb:300:in `measure'
33
+ c:/home/skaes/svn/trunk12pre/actionpack/lib/action_controller/benchmarking.rb:50:in `render'
34
+ c:/home/skaes/svn/trunk12pre/actionpack/lib/action_controller/base.rb:1096:in `perform_action_without_filters'
35
+ c:/home/skaes/svn/trunk12pre/actionpack/lib/action_controller/filters.rb:632:in `call_filter'
36
+ c:/home/skaes/svn/trunk12pre/actionpack/lib/action_controller/filters.rb:638:in `call_filter'
37
+ c:/home/skaes/svn/trunk12pre/actionpack/lib/action_controller/filters.rb:438:in `call'
38
+ c:/home/skaes/svn/trunk12pre/actionpack/lib/action_controller/filters.rb:637:in `call_filter'
39
+ c:/home/skaes/svn/trunk12pre/actionpack/lib/action_controller/filters.rb:634:in `call_filter'
40
+ c:/home/skaes/svn/trunk12pre/actionpack/lib/action_controller/filters.rb:619:in `perform_action_without_benchmark'
41
+ c:/home/skaes/svn/trunk12pre/actionpack/lib/action_controller/benchmarking.rb:66:in `perform_action_without_rescue'
42
+ c:/ruby184/lib/ruby/gems/1.8/gems/railsbench-0.9.2/lib/benchmark.rb:300:in `measure'
43
+ c:/home/skaes/svn/trunk12pre/actionpack/lib/action_controller/benchmarking.rb:66:in `perform_action_without_rescue'
44
+ c:/home/skaes/svn/trunk12pre/actionpack/lib/action_controller/rescue.rb:83:in `perform_action'
45
+ c:/home/skaes/svn/trunk12pre/actionpack/lib/action_controller/base.rb:430:in `process_without_filters'
46
+ c:/home/skaes/svn/trunk12pre/actionpack/lib/action_controller/filters.rb:624:in `process_without_session_management_support'
47
+ c:/home/skaes/svn/trunk12pre/actionpack/lib/action_controller/session_management.rb:114:in `process'
48
+ c:/home/skaes/svn/trunk12pre/actionpack/lib/action_controller/base.rb:330:in `process'
49
+ c:/home/skaes/svn/trunk12pre/railties/lib/dispatcher.rb:41:in `dispatch'
50
+ c:/ruby184/lib/ruby/gems/1.8/gems/railsbench-0.9.2/lib/railsbench/railsbenchmark.rb:262:in `run_urls_without_benchmark_and_without_gc_control'
51
+ c:/ruby184/lib/ruby/gems/1.8/gems/railsbench-0.9.2/lib/railsbench/railsbenchmark.rb:261:in `run_urls_without_benchmark_and_without_gc_control'
52
+ c:/ruby184/lib/ruby/gems/1.8/gems/railsbench-0.9.2/lib/railsbench/railsbenchmark.rb:259:in `run_urls_without_benchmark_and_without_gc_control'
53
+ c:/ruby184/lib/ruby/gems/1.8/gems/railsbench-0.9.2/lib/railsbench/railsbenchmark.rb:194:in `run_urls_without_benchmark'
54
+ c:/ruby184/lib/ruby/gems/1.8/gems/railsbench-0.9.2/script/run_urls:35
55
+ c:/ruby184/lib/ruby/gems/1.8/gems/railsbench-0.9.2/bin/railsbench:71
56
+ /ruby184/bin/railsbench:18