1

I wrote simple test

  1. add 100 items to [Collection]
  2. read 1000000 times from [Collection] randomly

When

  • [Collection]==HttpContext.Current.Items it takes 50 ms
  • [Collection]==HttpRuntime.Cache it takes 430ms
  • [Collection]==HashTable || [Collection]==Dictionaty 170ms

I guess the overhead of HttpRuntime.Cache is sync

I try to change initial capacity of HashTable/Dictionary? but with no success.

Does anyone know what is the reason of this turbo HttpContext.Current.Items? May I create this kind of object to custom cache implementation(of course with sync imply).

sh1ng
  • 2,808
  • 4
  • 24
  • 38

1 Answers1

2

The reason cache is sluggish is because it is thread safe - as you guessed.

Underlying type for HttpContext.Current.Items is a plain Hashtable. Perhaps if you put a snippet of your code, I would be able to explain the difference with the 3rd item.

Aliostad
  • 80,612
  • 21
  • 160
  • 208
  • Yes your right! The reason of HashTable/Dictionary overhead is some .ToString() and boxing/unboxing calls. For pure HttpContext.Current.Items and HashTable. HT is little faster. – sh1ng Feb 16 '11 at 11:56