HttpContext.Current.Items слишком быстр для доступа к элементу, но как?

Я написал простой тест

  1. добавить 100 предметов в [Коллекция]
  2. читать 1000000 раз из [Коллекция] в случайном порядке

когда

  • [Коллекция]==HttpContext.Current.Items это занимает 50 мс
  • [Коллекция]==HttpRuntime.Cache это занимает 430 мс
  • [Коллекция]==HashTable || [Коллекция] == словари 170мс

Я думаю, что издержки HttpRuntime.Cache синхронизируются

Я пытаюсь изменить начальную емкость HashTable/Dictionary? но безуспешно

Кто-нибудь знает в чем причина этого турбо HttpContext.Current.Items? Могу ли я создать объект такого типа для реализации пользовательского кэша (конечно, с синхронизацией).

1 ответ

Решение

Причина, по которой кэш-память медлительная, заключается в том, что она безопасна для потоков - как вы уже догадались

Базовый тип для HttpContext.Current.Items это равнина Hashtable, Возможно, если вы поместите фрагмент своего кода, я смогу объяснить разницу с 3-м пунктом.

Другие вопросы по тегам