query: tag:20

Performance comparison: Rails 1.2.6 vs 2.0.2

I ran both applications in Mongrel (with the ‘production’ environment). The results of ‘ab -n 5000 http://localhost:3000/’ are as follows:

  • Rails 1.2.6: 141.19 requests/sec
  • Rails 2.0.2: 214.76 requests/sec

Wow, what a difference! Rails 2.0 is 50% faster in a dummy application!

2.0の方が遅いという話もあったような気がしますが、速くなってるみたいですね。

posted by genki genki on Wed 19 Mar 2008 at 10:55 with 0 comments

友人から、手っ取り早くRails 2.0を使う方法を聞かれたので、
調べたことのメモです。

そういえば、2.0が出てから、完全な2.0対応を謳った
チュートリアル的なものがあまり無いかもしれませんね。
ちょっと検索して見つけたのは、

ここの一番下で紹介されてる
「Rolling with Rails 2.0 - The First Full Tutorial - Part 1」
は、いかにもよさそうな感じかな。

こちらも参考になるかも。

一応、書籍では、

上記の2つが現在手に入る、2.0対応のものとして知られています。
本格的に手を出すのであれば上記2冊がお勧めですが、ちょっと値がはりますね。

posted by genki genki on Tue 12 Feb 2008 at 19:03 with 0 comments

javascript_include_tagstylesheets_link_tag
:cache => trueオプションは、複数のassetsファイルを
ひとつのファイルにまとめる事で、サーバへのリクエスト
数を減らすことができる機能です。

何度か実験してみたところ、生成されたキャッシュファイルを
削除して更新するためには、単純にファイルを削除するだけ
ではだめで、APサーバのプロセスを再起動する必要があるようです。

このためには、./script/process/reaper -a graceful
を使う必要があります。タイプするのが面倒なので、
Rakeタスクを作ってみました。

lib/tasks/cache.rake

rails>>
namespace :tmp do
namespace :cache do
desc 'Delete cached asset files'
task :update do
patterns = [
'public/stylesheets/cached_*.css',
'public/javascripts/cached_*.js']
Dir.glob(patterns).each do |path|
rm_rf path
puts "deleted: #{path}"
end
./script/process/reaper -a graceful 2>&1 > /dev/null
puts "script/process/reaper -a graceful"
end
end
end
<<--

生成されるキャッシュファイルの名前を
:cache => "cached_#{controller.controller_name}"
と指定しているため、こんな感じになります。
デフォルトでは、all.cssall.jsとなりますので
適宜読みかえてください。

posted by genki genki on Sat 12 Jan 2008 at 23:09 with 0 comments

比嘉さんからciteされたみたいなので、取り急ぎ新しい情報を吐き出しておこうと思います。

そろろろRailsについて本音を書いてみるか

後、デバッグの環境は、Javaに比べて貧弱だと思う。Railsでデバッグをする7つの方法を見てほしい。IDEでソースにブレークポイントを設定(ソースコードを書き換えるのではなく)して、ステップイン、ステップオーバー、メモリの状態を見たりなんてのに慣れているJavaから比べると、すっごく大変に見える。

喜ばしいことに、Rails 2.0ではruby-debugを使ったdebuggerが正式に採用されました。
これの使い方は非常に簡単です。

まずは、以下のようにブレークポイントをコード中に書き込みます。

rails>>
def some_method
debugger # breakpoint
end
<<--

続いて、Webサーバをデバッグモードで実行します。

shell>>
% ./script/server -u
<<--

これだけです。あとは、実際にブレークポイントを仕掛けた
場所が実行されるようにすれば、gdbライクなruby-debugの
セッションが開始されます。
ruby-debugは、gdbと同じように、ステップ実行、ステップオーバー等の逐次実行を行うインターフェイスがあるので、
コードの動作を確認しながらデバッグを行うことができます。

gdbになれていない人には、irbコマンドを実行することで、
その場でirbを立ち上げることができます。これは非常に便利ですね。

参考までに、debuggerから実行できるコマンドのリストを
載せておきます。

pre>>
backtrace break catch cont delete display down eval exit finish frame help irb list method next p pp quit reload restart save script set step thread trace undisplay up var where
<<--

Have a good debugging life!

See Also

更新履歴

  • 2008/01/21 See Alsoに1点追加
posted by genki genki on Fri 11 Jan 2008 at 22:08 with 0 comments