2009-04-01から1ヶ月間の記事一覧

さらに spec の実行を速くする

MySQL のデータを RAM Disk 上に置いて 3 倍の速度を達成したわけだが、さらなる高速化を考えた。 遅いところ 経験上、fixture を何度も読込んでいると遅いことがわかっている。fixture を before(:each) ではなく、before(:all) で読み込むようにすれば、回…

Mix-in の中で before :save を仕掛ける

Mix-in を include しても before :save などに、 Hook を仕掛けることができない。 before は module が定義される時に通常の method として実行されるが、そのモジュールには :save というメソッドは存在しないためである。 module が対象の model に incl…

spec の中で Controller の object を無理矢理生成する

Mock を活用してテストをする場合、 spec の中で Controller の object を無理矢理生成して、直接 method を呼んでテストを行いたい場合がある。でも Controller#new は、一つの引数を要求している。このような時は、Controller#new に Merb::Test::RequestH…

スクリプトは何を行っている?

MySQL のデータディレクトリ(data)を、 data.backup に rename。 RAM Disk device を指定容量で作成。 newfs でファイルシステムを RAM Disk を format。 HFS+ は使用不可能だった。 RAM Disk をマウント。 rename 後の MySQL のデータディレクトリ(data.bac…

性能はどの程度上がった?

HDD: 1110 sec RAM Disk: 366 secちょうど 3 倍まで性能が上がった。 CPU メータを監視していると、片コアが 100% にまで行くようになった。 ほぼ理想的な状態で満足。

手順

初回のみ行うこと 1. MySQL のインストールパスを調べる。 OSX で MySQL の公式サイトで配布されているバイナリをインストールしている場合は、 /usr/local/mysql になる。 わからなければ locate user.MYI で検索すると出てくるかもしれない。 2. MySQL イ…

MySQL を RAMdisk 上で動かす

spec の実行に極端に時間がかかるようになったため、 MySQL を RAMDisk で動かすことを考えた。spec 専用にしか動かしていない MySQL だったら、永続化なんて不要だし。