RubyのMySQLドライバのパフォーマンスの差

ゴールデンウィークが終わって,やはりというか,順調にお仕事が積みあがってきました(汗)
まぁ,雑用メインですが..


↓のお話は最近の開発系の雑用の1つより

昨日はCruiseControlという「継続的インテグレーション」を行うツールをわれらがプロジェクトのサーバにインストールし,あわせてテストプログラムの改修などせっせとしていました.
すぐ終わるはずが,テストプログラムの改修やパフォーマンスの問題などに手間取って結局1日仕事に...


普段手元のデスクトップマシンで全テストを実行すると大体5分くらいで終わるんですが,開発用サーバでは全テストが終わるまで30分くらいかかります.
MySQLのサーバパラメータなどをチューニングしても改善せず.どうして?


プロファイリングなどしていろいろ原因を調べると,どうもRubyMySQLドライバが怪しい (¬_¬)
所要時間全体の4割近くがMySQL#get_lengthというメソッドで,同じく4割近くがガベージコレクション関係で占められていました.
ということでRubyMySQLのドライバをRuby版(Ruby/MySQL)からC版(MySQL/Ruby)にインストールしなおしたところ,テスト終了までの時間が1分半ほどに短縮されました.
なんと所要時間は20分の1!


厳然たる差ですね..



そういえば同じサーバ上のTrac(プロジェクト管理ツール)も動作が重たいのでなんとかしたい,けど手が回らない(´・ω・`)