ここまでの流れを整理してみると、おかしいことに気付く。本当にperlが遅いのか?
まず、Movable Type-4.22とmysql-server-5.0.45-7.el5のデフォルト設定では、以下の結果だった。
# time ./mt-rebuild.pl --all
real 6m14.524s
user 3m13.995s
sys 0m2.394s
oprofileの結果perlが遅いのではと推測し、Core2Duoに最適化したバイナリで計測したところ、以下の結果だった。
※MT-4.1との組み合わせなので、上より悪い。
# time ./mt-rebuild.pl --all
real 6m34.897s
user 3m19.360s
sys 0m17.696s
ところが、MT-4.22とpostgresql-server-8.1.11-1.el5_1.1のデフォルト設定では、以下の結果だった。
# time ./mt-rebuild.pl --all
real 2m49.300s
user 2m0.760s
sys 0m1.861s
となるとだ。perlが遅いんじゃなくて、DBがこの処理に大きく影響していることは明らかだ。oprofileの結果はこの際少し置いておいて、DBのチューニングをすることにしよう。