我正在爲我的公司測試Microsoft的ESENT(可擴展存儲引擎)。但是,我有奇怪的表現結果。ESENT性能Vista vs XP
在類似技術(SqLite)的比較中,讀取數據時性能非常弱。
在我的性能測試中,我或多或少地隨機讀取數據庫中的所有數據。我不讀兩次相同的數據,所以我認爲緩存不能幫助我。當數據「熱」時,我多次運行測試以獲得速度。我在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文件。這樣,根據操作系統,我不必根據不同的代碼進行編碼。 – spaceboy 2011-04-07 13:22:46