AnotherCustomFieldsはMT標準カスタムフィールドより再構築が速い

AnotherCustomFieldsプラグインは、Movable Type標準のカスタムフィールドよりも、再構築速度が速いです。
両者の再構築速度を比較する実験を行ってみました。

1.AnotherCustomFieldsプラグインの方が速い理由

Movable Type標準のカスタムフィールドは、ブログ記事等のテーブルに直接にフィールドを追加するのではありません。
カスタムフィールド用の別テーブルにデータを保存するようになっています。
また、1つひとつのカスタムフィールドが、テーブルの個々のレコードに対応します。

一方、AnotherCustomFieldsプラグインでは、ブログ記事等のテーブルに直接にフィールドを追加します。

このため、Movable Type標準のカスタムフィールドよりも、AnotherCustomFieldsプラグインの方が、データベースからブログ記事等を読み込む際のデータベースアクセスの回数が少ないです。
また、処理も単純になります。
したがって、AnotherCustomFieldsプラグインの方が、動作原理的に再構築が速くなると予想されます。

2.テスト内容

Movable Type標準のカスタムフィールドと、AnotherCustomFieldsプラグインを比較するために、それぞれで以下のようなテストを行ってみました。

  • ブログ記事数は2552件(当ブログの記事をエクスポート)
  • 1行テキスト/複数行テキスト/日付のフィールドを各10個(合計30個)追加
  • 各ブログ記事の1行テキストおよび日付のフィールドには、ランダムな値を設定
  • 複数行テキストのフィールドには、個々のブログ記事の本文や続きの文章を設定
  • 「クラシックブログ」テーマを適用
  • 「ブログ記事アーカイブ」テンプレートに、各フィールドの値を出力するためのテンプレートタグを追加
  • 「カテゴリアーカイブ」および「月別アーカイブ」のテンプレートモジュールをキャッシュするように設定
    (これらのテンプレートモジュールは再構築時のオーバーヘッドが大きいので、オーバーヘッドの影響を除去するためにキャッシュ)
  • mt-config.cgiの「EntriesPerRebuild」の値を200に設定し(デフォルト値は40)、一度に再構築する記事の数を増やして、再構築時のmt.cgiの起動回数を減らす(mt.cgiの起動のオーバーヘッドが大きいので、その影響を少なくする)
  • ブログ記事アーカイブのみ再構築

実験の結果は以下のようになりました。
AnotherCustomFieldsプラグインだと、Movable Type標準のカスタムフィールドの約70%の時間で、再構築が終了しました。

テスト項目再構築の所要時間
Movable Type標準のカスタムフィールド4分46秒
AnotherCustomFields3分22秒

また、上記のテストで、テンプレートをデフォルトの状態に戻して、カスタムフィールドの値を出力しないようにすると、再構築は3分14秒で終了しました。
AnotherCustomFieldsプラグインだと、フィールド追加による再構築時間の増加は8秒(約4%増)にすぎません。
一方、Movable Type標準のカスタムフィールドだと、フィールド追加による再構築時間の増加は1分32秒で、約47%も増えています。

このようなことから、AnotherCustomFieldsプラグインは、MTOSだけでなく、商用版Movable Typeと組み合わせてもメリットがあると考えます。
そこで、後日、AnotherCustomFieldsプラグインの商用版Movable Type用のライセンスもご提供したいと思います。
今しばらくお待ちください。