file_get_contentsを使用してディスクからXMLファイルをロードしています。テストとして、file_get_contents()
を3.99秒で1000回使用して156Kファイルを読み込むことができます。ロードを行い、memcacheレイヤーに置き換えた部分をサブクラス化しました。私の開発マシンでは、4.54秒で同じドキュメントを1000回読み込むことができます。なぜfile_get_contentsはmemcache_getより高速ですか?
file_get_contents()がキャッシュを行うことをお勧めしますが、実際にはよく知られているキャッシュテクニックよりも速いようです。単一のサーバー上では、file_get_contents()
のパフォーマンスは得られますか?
Macports、OS X 10.6.8でPHP 5.2.17を使用しています。
編集:このサイズのXML文書では、MEMCACHE_COMPRESSED
フラグを使用すると小さな利点があります。 memcacheによる1,500ロードは、6.74(without)ではなく6.44 sec(圧縮あり)で実行されます。しかし、どちらも遅いですfile_get_contents
、5.71秒で同じ数の負荷を行います。
ああ、面白いです。あなたは、さまざまなXMLファイルが常にロードされているWebサーバー上で、Memcacheアプローチのパフォーマンスがいくつかのケースでより良いと言いますか? (おそらく512MBのRAMを搭載した、ローエンドのLinux VPS上に展開することを期待しています.Memcacheがデフォルトで予約するデフォルトの64Mは無料です。) – halfer
でも、FSキャッシュから何かをノックアウトするという競合は、memcacheキャッシュから何かをノックアウトする可能性が高いのだろうかと疑問に思う。 – halfer
1つのアプリケーション専用のVPSでは、すべてに合うようにしてください。しかし、あなたのキャッシュを "適切なサイズにする"価値があります:もし十分であれば、Memcache以下で32Mを使用してください。アプリがPHPベースの場合は、APCまたはXcacheを使用していることを確認してください。 MySQLを使用している場合、MySQLキャッシュをチューニングすることでパフォーマンスの良い配当を得ることができることを忘れないでください。512Mbは十分に小さく、賢明に割り当てる必要があります。 – TerryE