HttpContext.Current.Items太快,无法访问项目,但如何?

时间:2011-02-16 11:25:40

标签: asp.net httpcontext asp.net-cache asp.net-caching

我写了简单的测试

  1. 将100件物品添加到[收藏]
  2. 从[Collection]中随机读取1000000次
    • [Collection] == HttpContext.Current.Items需要50毫秒
    • [收藏] == HttpRuntime.Cache需要430毫秒
    • [收藏] == HashTable || [收藏] == Dictionaty 170ms

    我猜HttpRuntime.Cache的开销是同步

    我尝试更改HashTable / Dictionary的初始容量?但没有成功。

    有谁知道这个turbo HttpContext.Current.Items的原因是什么? 我是否可以将这种对象创建为自定义缓存实现(当然还有同步暗示)。

1 个答案:

答案 0 :(得分:2)

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

HttpContext.Current.Items的基础类型是普通Hashtable。也许如果你把代码片段放在一边,我就能解释第3项的差异。