2011-03-23 5 views
1

Я в процессе тестирования ESENT (Extensible Storage Engine) от Microsoft для своей компании. Тем не менее, у меня есть странные результаты.Производительность ESENT Vista против XP

По сравнению с аналогичными технологиями (SqLite), производительность была очень слабой при чтении данных.

В моем тесте производительности я читал более или менее случайным образом все данные в базе данных. Я не читаю одни и те же данные дважды, поэтому я думаю, что кеш не может мне помочь. Я запускаю тест много раз, чтобы получить скорость, когда данные «горячие». Я использую индекс для идентификатора типа long. Я использую следующие функции: JetSetCurrentIndex, JetMakeKey, JetSeek и JetRetrieveColumn для чтения.

В Windows Vista я активировал параметр JET_paramEnableFileCache, и он совершил чудеса и был даже быстрее, чем SqLite.

Однако, поскольку этот параметр доступен в Windows Vista или более поздней версии, производительность в Windows XP ничем не сопоставима с SQlite (например, 15 раз медленнее). Он читает на диске каждый раз. При использовании Sqlite в Windows XP все прочитанные тесты (кроме первого) не читаются на диске.

Я пропустил еще один параметр или что-то, что могло бы изменить ситуацию?

Большое спасибо!

ответ

4

Если JET_paramEnableFileCache помогает, вы должны прерывать и перезапускать процесс каждый раз. JET_paramEnableFileCache был представлен для работы с приложениями, которые часто инициализируются и завершаются, а это означает, что кэш-память ОС должна использоваться вместо обычного кэша базы данных.

Если вы сохраняете процесс на XP, тогда вы увидите производительность, когда данные будут «горячими».

+0

Спасибо за соответствующий комментарий. На самом деле, я понял, что ничто не мешало мне использовать файл esent.dll, исходящий из Vista в Windows XP или 2000. Таким образом, мне не нужно кодировать по-разному в зависимости от ОС. – spaceboy

0

@Spaceboy: Я сам думал об этом ... но замените ли вы ESENT.DLL на windir \ system32? Иногда мне удалось, поставив DLL в мой \ bin subdir ...

+0

Да, я планировал разместить его в том же каталоге, что и в моем приложении .exe. Но я не думаю, что у нас есть права перераспределять эту DLL, поэтому из-за этого был исключен проект использования ESENT. Если, в конце концов, наше приложение больше не поддерживает XP или меньше, мы можем переоценить. – spaceboy

Смежные вопросы