Hatena::Grouparaistudy

czk-htnの日記

2006-08-18

[]12.デバッガ

12.1 Rubyデバッガ

  • Rubyにはデバッガが内蔵されているよ
    • 通常期待される機能はもっている
% ruby -r debug [オプション] [プログラムファイル名] [引数]

12.2 対話型Ruby

  • irbを使えばシェルっぽくRubyが使える
    • ちょっとコードを試してみたい時に便利
    • ~/.irbrcで初期設定が可能
    • 詳しくは付録B
  • viから直接Rubyコードを実行することもできる

そもそもRubyで開発する時やデバッグする時はFreeRIDEを使ったりするもんなんだろうか?

12.3 うまく動かない

間違えやすい点の中で自分なりの注意点を

  • オブジェクト内ではsetter=でなくself.setter=を使うようにする
  • Perlと違い)ファイルから読み込まれたテキストは自動的に数値に変換されない
  • コードのどこかで変数に変な値が設定されている時はObject#freezeしてみる

12.4 それにしても遅すぎる!

確かにRubyは遅い。会社のSparcSolarisで動かしている影舞はページが表示されるのに2〜3秒かかる。profileボトルネックを調べてみるか(たぶんXML読み込みのとこなんだろうけど)。

ベンチマーク

手元のMacでやってみる。

プロセッサ
867Mhz PowerPC G4
メモリ
896MB SDRAM
require "benchmark"
include Benchmark
n = 1000000
bm(12) do |test|
  test.report("normal:") do
    n.times do |x|
      y = x + 1
    end
  end
  test.report("predefine:") do
    x = y = 0
    n.times do |x|
      y = x + 1
    end
  end
end
:w !ruby
                  user     system      total        real
normal:       3.810000   0.010000   3.820000 (  4.234029)
predefine:    3.070000   0.010000   3.080000 (  3.424813)

Rubyにはプロファイラが付属している。これによりボトネックを特定できる。

% ruby -r profile
トラックバック - http://araistudy.g.hatena.ne.jp/czk-htn/20060818