HttpContext.Current.Items 访问项目的速度太快,但是如何实现?

发布于 2024-10-17 19:07:05 字数 448 浏览 1 评论 0原文

我写了简单的测试

  1. 添加100个项目到[Collection]
  2. 随机从[Collection]读取1000000次

  • [Collection]==HttpContext.Current.Items需要50毫秒
  • [Collection]==HttpRuntime.Cache需要430ms
  • [Collection]==哈希表 || [Collection]==Dictionaty 170ms

我猜 HttpRuntime.Cache 的开销是同步的

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

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

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).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱人如己 2024-10-24 19:07:05

缓存缓慢的原因是它是线程安全 - 正如您所猜测的。

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

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文