私はMicrosoftのESENT(Extensible Storage Engine)を私の会社のためにテスト中です。しかし、私は奇妙なパフォーマンスの結果があります。ESENTパフォーマンスVista対XP
類似のテクノロジ(SqLite)と比較して、データを読み取るときのパフォーマンスは非常に低かった。
パフォーマンステストでは、データベース内のすべてのデータを多かれ少なかれランダムに読み取りました。私は同じデータを2度読んでいないので、キャッシュが私を助けないと思います。私はデータが "熱い"ときに速度を持つために何度もテストを実行します。私はlong型のidにインデックスを使用します。私は次の機能を使用します:JetSetCurrentIndex、JetMakeKey、JetSeek、JetRetrieveColumnを読み込みます。
Windows Vistaでは、パラメータJET_paramEnableFileCacheを有効にしました。奇跡を起こし、SqLiteよりも高速でした。
ただし、このパラメータはWindows Vista以降で使用できるため、Windows XPのパフォーマンスはSQliteと同等(15倍速)です。毎回ディスクを読み込みます。 Windows XPでSqliteを使用すると、すべての読み取りテスト(最初のものを除く)はディスク上で読み取られません。
私は別のパラメータや違いがあるものがないのですか?
ありがとうございます!
関連するコメントありがとうございます。実際には、Windows XPまたは2000上のVistaから来るesent.dllファイルを使用することが何も妨げられていないことに気付きました。そうすれば、OSに応じて違うコードを書く必要はありません。 – spaceboy