mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
benchmark: revise ERB benchmarks using YAML syntax
to improve the accuracy of measurement by stop using block. benchmark/app_erb.rb -> benchmark/app_erb.yml: renamed and revised benchmark/erb_render.rb -> benchmark/erb_render.yml: ditto benchmark/README.md: follow renames git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63941 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
498487ec2a
commit
3efcb74036
5 changed files with 50 additions and 52 deletions
|
@ -9,7 +9,7 @@ Execute `gem install benchmark_driver` and run a command like:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Run a benchmark script with the ruby in the $PATH
|
# Run a benchmark script with the ruby in the $PATH
|
||||||
benchmark-driver benchmark/erb_render.rb
|
benchmark-driver benchmark/erb_fib.rb
|
||||||
|
|
||||||
# Run all benchmark scripts with multiple Ruby executables or options
|
# Run all benchmark scripts with multiple Ruby executables or options
|
||||||
benchmark-driver benchmark/*.yml -e /path/to/ruby -e '/path/to/ruby --jit'
|
benchmark-driver benchmark/*.yml -e /path/to/ruby -e '/path/to/ruby --jit'
|
||||||
|
@ -59,7 +59,7 @@ make benchmark ITEM=vm1 OPTS=--filter=block
|
||||||
|
|
||||||
# You can specify the benchmark by an exact filename instead of using the default argument:
|
# You can specify the benchmark by an exact filename instead of using the default argument:
|
||||||
# ARGS = $$(find $(srcdir)/benchmark -maxdepth 1 -name '*$(ITEM)*.yml' -o -name '*$(ITEM)*.rb')
|
# ARGS = $$(find $(srcdir)/benchmark -maxdepth 1 -name '*$(ITEM)*.yml' -o -name '*$(ITEM)*.rb')
|
||||||
make benchmark ARGS=../benchmark/erb_render.rb
|
make benchmark ARGS=../benchmark/erb_render.yml
|
||||||
|
|
||||||
# You can specify any option via $OPTS
|
# You can specify any option via $OPTS
|
||||||
make benchmark OPTS="--help"
|
make benchmark OPTS="--help"
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
#
|
|
||||||
# Create many HTML strings with ERB.
|
|
||||||
#
|
|
||||||
|
|
||||||
require 'erb'
|
|
||||||
|
|
||||||
data = <<erb
|
|
||||||
<html>
|
|
||||||
<head> <%= title %> </head>
|
|
||||||
<body>
|
|
||||||
<h1> <%= title %> </h1>
|
|
||||||
<p>
|
|
||||||
<%= content %>
|
|
||||||
</p>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
erb
|
|
||||||
|
|
||||||
max = 15_000
|
|
||||||
title = "hello world!"
|
|
||||||
content = "hello world!\n" * 10
|
|
||||||
|
|
||||||
max.times{
|
|
||||||
ERB.new(data).result(binding)
|
|
||||||
}
|
|
24
benchmark/app_erb.yml
Normal file
24
benchmark/app_erb.yml
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
#
|
||||||
|
# Create many HTML strings with ERB.
|
||||||
|
#
|
||||||
|
prelude: |
|
||||||
|
require 'erb'
|
||||||
|
|
||||||
|
data = <<erb
|
||||||
|
<html>
|
||||||
|
<head> <%= title %> </head>
|
||||||
|
<body>
|
||||||
|
<h1> <%= title %> </h1>
|
||||||
|
<p>
|
||||||
|
<%= content %>
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
erb
|
||||||
|
|
||||||
|
max = 15_000
|
||||||
|
title = "hello world!"
|
||||||
|
content = "hello world!\n" * 10
|
||||||
|
benchmark:
|
||||||
|
app_erb: ERB.new(data).result(binding)
|
||||||
|
loop_count: 15000
|
|
@ -1,25 +0,0 @@
|
||||||
require 'erb'
|
|
||||||
|
|
||||||
data = <<erb
|
|
||||||
<html>
|
|
||||||
<head> <%= title %> </head>
|
|
||||||
<body>
|
|
||||||
<h1> <%= title %> </h1>
|
|
||||||
<p>
|
|
||||||
<%= content %>
|
|
||||||
</p>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
erb
|
|
||||||
|
|
||||||
max = 1_500_000
|
|
||||||
title = "hello world!"
|
|
||||||
content = "hello world!\n" * 10
|
|
||||||
|
|
||||||
src = "def self.render(title, content); #{ERB.new(data).src}; end"
|
|
||||||
mod = Module.new
|
|
||||||
mod.instance_eval(src, "(ERB)")
|
|
||||||
|
|
||||||
max.times do
|
|
||||||
mod.render(title, content)
|
|
||||||
end
|
|
24
benchmark/erb_render.yml
Normal file
24
benchmark/erb_render.yml
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
prelude: |
|
||||||
|
require 'erb'
|
||||||
|
|
||||||
|
data = <<erb
|
||||||
|
<html>
|
||||||
|
<head> <%= title %> </head>
|
||||||
|
<body>
|
||||||
|
<h1> <%= title %> </h1>
|
||||||
|
<p>
|
||||||
|
<%= content %>
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
erb
|
||||||
|
|
||||||
|
title = "hello world!"
|
||||||
|
content = "hello world!\n" * 10
|
||||||
|
|
||||||
|
src = "def self.render(title, content); #{ERB.new(data).src}; end"
|
||||||
|
mod = Module.new
|
||||||
|
mod.instance_eval(src, "(ERB)")
|
||||||
|
benchmark:
|
||||||
|
erb_render: mod.render(title, content)
|
||||||
|
loop_count: 1500000
|
Loading…
Reference in a new issue