2011-02-16 43 views
1

我写了简单的测试HttpContext.Current.Items太快无法访问项目,但如何?

  1. 增加100项[收藏]
  2. 阅读[收藏] 100万倍随机

  • [收藏] == HttpContext的。 Current.Items需要50 ms
  • [收藏] == HttpRuntime.Cache需要430ms
  • [收藏] == HashTable || [收藏] == Dictionaty 170ms

我想HttpRuntime.Cache的开销是同步

我试图改变的HashTable /词典的初始容量?但没有成功。

有谁知道这个turbo HttpContext.Current.Items是什么原因? 我可以创建这种类型的对象来定制缓存实现(当然,同步暗示)。

回答

2

缓存缓慢的原因是因为它是thread safe - 正如你猜测的那样。

HttpContext.Current.Items的相关类型是普通的Hashtable。也许如果你把你的代码片段,我可以解释与第三项不同之处。

+0

是的你的权利! HashTable/Dictionary开销的原因是一些.ToString()和装箱/拆箱的调用。用于纯HttpContext.Current.Items和HashTable。 HT快一点。 – sh1ng 2011-02-16 11:56:20