HttpContext.Current.Items слишком быстр для доступа к элементу, но как? - PullRequest
1 голос
/ 16 февраля 2011

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

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

Когда

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

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

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

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

1 Ответ

2 голосов
/ 16 февраля 2011

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

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

...