HttpContext.Current.Items слишком быстр для доступа к элементу, но как?
Я написал простой тест
- добавить 100 предметов в [Коллекция]
- читать 1000000 раз из [Коллекция] в случайном порядке
когда
- [Коллекция]==HttpContext.Current.Items это занимает 50 мс
- [Коллекция]==HttpRuntime.Cache это занимает 430 мс
- [Коллекция]==HashTable || [Коллекция] == словари 170мс
Я думаю, что издержки HttpRuntime.Cache синхронизируются
Я пытаюсь изменить начальную емкость HashTable/Dictionary? но безуспешно
Кто-нибудь знает в чем причина этого турбо HttpContext.Current.Items? Могу ли я создать объект такого типа для реализации пользовательского кэша (конечно, с синхронизацией).
1 ответ
Решение
Причина, по которой кэш-память медлительная, заключается в том, что она безопасна для потоков - как вы уже догадались
Базовый тип для HttpContext.Current.Items
это равнина Hashtable
, Возможно, если вы поместите фрагмент своего кода, я смогу объяснить разницу с 3-м пунктом.