最終的なパフォーマンス
例によって(?)、Yahoo! JAPANの重量級HTMLのパース&レンダリング対決。
テストマシン
| CPU | Duron 900MHz(前回PnetiumIII 800MHzと言ったのはウソでした) |
|---|---|
| メモリ | 320MB |
| OS | Gentoo Linux |
| Ruby | 1.8.2 |
ベンチマークプログラム(Ruby/SALT)- bench_s.rb
s_st = Time.now
require "salt"
s_time = Time.now - s_st
puts "[Library load]"
printf(" SALT = %.6f sec\n", s_time)
#テンプレートの読み込み
t = ""
open("yahoo.html", "r") do |fh|
t = fh.read
end
s_st = Time.now
s = Salt.new(t)
s_time = Time.now - s_st
puts "[Parse]"
printf(" SALT = %.6f sec\n", s_time)
#結果取得
s_st = Time.now
sr = s.result
s_time = Time.now - s_st
puts "[Result]"
printf(" SALT = %.6f sec\n", s_time)ベンチマークプログラム(ERB)- bench_e.rb
e_st = Time.now
require "erb"
e_time = Time.now - e_st
puts "[Library load]"
printf(" ERB = %.6f sec\n", e_time)
#テンプレートの読み込み
t = ""
open("yahoo.html", "r") do |fh|
t = fh.read
end
e_st = Time.now
e = ERB.new(t)
e_time = Time.now - e_st
puts "[Parse]"
printf(" ERB = %.6f sec\n", e_time)
#結果取得
e_st = Time.now
er = e.result
e_time = Time.now - e_st
puts "[Result]"
printf(" ERB = %.6f sec\n", e_time)実行結果
$ ruby bench_s.rb [Library load] SALT = 0.001828 sec [Parse] SALT = 0.003914 sec [Result] SALT = 0.001931 sec
$ ruby bench_e.rb [Library load] ERB = 0.011462 sec [Parse] ERB = 0.087126 sec [Result] ERB = 0.030482 sec
んー。何度かそれぞれを実行してみたけど、ほとんど同じ結果ですね。
これで思ったのは、「我ながらいいもん作った」というよりERBが死ぬほど遅いという事実。
requireは、FastCGI使うなり、mod_ruby(が使えるならeRuby使うか)を使うなりで逃げるとしても、それ以外でも0.1秒以上かかっているってのが恐ろしい。パースとレンダリングしかしてないのに!