<< back to list

RAMディスク上のSQLite3でAR.createを試す あとで読む

@littlestarlingさんがtwitterで
「rake db:fixtures:load からかえってこない…2.5MB程度のcsvなのになんで?」
と呟いていたので。
RAMディスク上のSQLite3と、HDD上のSQLite3とでRailsのAR.createを試し、ベンチマークを取ってみました。(話の流れ上、トランザクションのあり/なしも同時に試した)

RAMディスクを準備

Mac OSX Leopardの場合

RamdiskOnMenubar (ROM)」を使ってRAMディスクを作成可能です。

  1. DMGファイルをダウンロードします。
  2. 展開されたイメージ内の「RamDisk.app」をアプリケーションフォルダに移動します。
  3. 「RamDisk.app」を起動し、任意のVolume sizeを設定後「Mount」ボタンをクリックします。
  4. デスクトップにRamDiskがマウントされます。

Windows 2000/xpの場合

ERAM for WindowsNT/2000/XP」などを使ってRAMディスクを作成できるようです。(未検証)

 

実際に試してみる

作成したRAMディスクとHDDの両方で、Railsプロジェクト及び、テスト用のDBを作成しておきます。

$ rails benchmark_test
$ cd benchmark_test
$ ruby script/generate model item name:string
$ rake db:migrate

 

script/consoleで、AR.createを試してみる。

require 'benchmark'
puts Benchmark::CAPTION

def benchmark(str)
puts Benchmark.measure { eval(str) }
end

benchmark '10000.times{|i| Item.create(:name => "test#{i}") }' # トランザクションなし
benchmark 'Item.transaction{ 10000.times{|i| Item.create(:name => "test#{i}") } }'
# トランザクションあり

 

結果はこんな感じ。

[RAM]
12.310000 4.150000 16.460000 ( 20.401763)
9.850000 0.170000 10.020000 ( 10.207979)

[HDD 7200rpm]
19.490000 8.420000 27.910000 ( 48.516296)
9.850000 0.200000 10.050000 ( 11.011132)

 

きちんとトランザクション使えばHDDとRAMで大きな差はないけど、トランザクション使わない場合はRAMディスク側の方が倍以上早いみたいです。
「とりあえず手間暇かけずに今回だけAR.create高速化したい」
みたいな、チキンRailsユーザー*1は、RAMディスク使ってみるといいかもしれません。

なお、「rake db:fixtures:load」は、CSVをSQLに変換する処理自体が重いので、別途SQLに変換かけたファイルを保存しておいた方が幸せになれるそうです。(@conceal_rsさん・談)
なるほど確かに。

 

*1 まさに僕です

Ruby, Rails, SQLite3, パフォーマンス改善, トランザクション, RAMディスク | comments(0) | trackbacks(0)   このエントリーを含むはてなブックマーク Yahoo!ブックマークに登録 livedoor クリップに登録 del.icio.usに登録 Google Bookmarks に追加 この記事をBuzzurlに追加 2009.04.13 Mon 18:54

COMMENTS

name : email : url :  
captcha: simple_captcha.jpg(全て大文字のアルファベットです)
画像中の文字とおなじものを入力してください。
comment:
コメントには日本語を必ず入力してください。(スパム対策です)
COMMENT

TRACKBACKS

この記事へのトラックバックURL: http://www.red-mount.com/trackback/43_fab09ea52b78fcad33717ff998039dabc3756ffd

<< back to list
 

ABOUT ME

tak (Takahito Sezutsu)

コメント、トラックバックはお気軽に!

COMMENTS

  • Beanstalk - WEBで管理可能なフリーのSubversionサーバー
    LILAC (08.14)
  • CSS Nite in Ginza Vol.29に行ってきました。
    Betsy (05.14)
  • 「オリジナルの項目が見つからなかったので、エイリアス“********”は開けません。」と出て、Finderで外付けHDDが開けない時は
    poo (04.19)
  • MacのSkypeでログイン時プルダウンメニューに表示されるSkype名を消す方法
    tak (06.22)
  • 「オリジナルの項目が見つからなかったので、エイリアス“********”は開けません。」と出て、Finderで外付けHDDが開けない時は
    tak (06.22)
  • 「オリジナルの項目が見つからなかったので、エイリアス“********”は開けません。」と出て、Finderで外付けHDDが開けない時は
    ko (06.22)
  • MacのSkypeでログイン時プルダウンメニューに表示されるSkype名を消す方法
    Mac (05.06)
  • MacのSkypeでログイン時プルダウンメニューに表示されるSkype名を消す方法
    tak (03.11)
  • MacのSkypeでログイン時プルダウンメニューに表示されるSkype名を消す方法
    tama (03.11)
  • Mac版ATOK定額制(体験版)を1週間使ってみた
    tak (09.19)
フィードメーター - RED-MOUNT.COM
あわせて読みたいブログパーツ