ESENT производительность Vista против XP - PullRequest
1 голос
/ 23 марта 2011

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

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

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

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

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

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

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

Ответы [ 2 ]

4 голосов
/ 07 апреля 2011

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

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

0 голосов
/ 14 мая 2011

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

...