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

Asp.net HttpContext.Current.Items太快,无法访问项目,但如何访问?,asp.net,httpcontext,asp.net-cache,asp.net-caching,Asp.net,Httpcontext,Asp.net Cache,Asp.net Caching,我写了一个简单的测试 将100个项目添加到[集合] 从[Collection]中随机读取1000000次 什么时候 [Collection]==HttpContext.Current.Items需要50毫秒 [Collection]==HttpRuntime.Cache需要430ms [Collection]==哈希表| |[Collection]==词汇170ms 我想HttpRuntime.Cache的开销是同步的 我是否尝试更改哈希表/字典的初始容量?但是没有成功 有人知道这个turb

我写了一个简单的测试

  • 将100个项目添加到[集合]
  • 从[Collection]中随机读取1000000次
  • 什么时候

    • [Collection]==HttpContext.Current.Items需要50毫秒
    • [Collection]==HttpRuntime.Cache需要430ms
    • [Collection]==哈希表| |[Collection]==词汇170ms
    我想HttpRuntime.Cache的开销是同步的

    我是否尝试更改哈希表/字典的初始容量?但是没有成功

    有人知道这个turbo HttpContext.Current.Items的原因吗?
    我可以为自定义缓存实现创建这种类型的对象吗(当然有sync imple)。

    缓存之所以迟钝,是因为正如您所猜测的那样


    HttpContext.Current.Items的底层类型是一个普通的
    Hashtable
    。也许如果你放一段代码,我就能解释第三项的区别。

    是的,你说得对!哈希表/字典开销的原因是一些.ToString()和装箱/取消装箱调用。对于纯HttpContext.Current.Items和哈希表。HT稍微快一点。