c# - ASP.NET 中的字典查找效率和请求范围全局变量?可通过 global.asax 和页面/等访问

标签 c# asp.net

我知道这里有几个关于“请求范围”全局变量的回答问题,但我想具体挑剔一些问题,也许可以从你们中的一两个人身上挤出一些额外的启发。

我有一个 ASP.NET C# 网站和一个静态对象字典(在应用程序启动时从数据库加载)。每个页面请求都需要在字典中进行查找(基于从请求 url/等派生的键)并获取适当的对象。

问题是我试图通过减少每个请求对字典的查找来最大限度地提高效率。在页面本身中进行一次查找非常简单,我也可以将对象传递给子控件等。但是 global.asax 与页面分开,它还需要使用该对象(在 Application_BeginRequest 和 Session_Start 中)。

那么,即使每秒有很多请求,在 Application_BeginRequest 中执行一次字典查找、在 Session_Start 中执行一次(必要时)以及在 Page 中执行一次字典查找的速度可以忽略不计吗?

如果我能有一个可以轻松调用的请求范围的全局变量,我会很高兴。我看到的唯一可用的变量是 HttpContext.Current.Items,而它本身就是一个字典。

我对效率的关注是否过于挑剔?或者从长远来看,当发出越来越多的请求时,这些毫秒(纳秒?)会让我受益吗?

谢谢。

PS。目前,我的字典中只有大约 100 个对象,尽管将来可能会增加。

最佳答案

字典查找(大致)是一个恒定时间操作,所以,是的,我确实相信您试图在这里过度优化。

与往常一样,当性能成为问题时,请尝试在进行微优化之前进行分析(有 tools available 用于此目的)。否则,您最终可能会浪费时间来优化应用程序的错误部分。

关于c# - ASP.NET 中的字典查找效率和请求范围全局变量?可通过 global.asax 和页面/等访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4939864/

相关文章:

c# - C#中的构造函数和继承问题

c# - 如何从 MahApps.Metro 模板中删除窗口命令?

c# - 快速构建缓存键

c# - .Net Core App 2.0 与 .Net Standard 2.0 库不兼容

javascript - 阻止 HTML/Javascript 页面在初始化期间加载

C#.NET 网络 API : cycling file upload location accessible and modifiable by various asynchronous HTTP requests

c# - ReportViewer 的中心位置 - ASP.net

c# - configuration.getValue 或 configuration.getsection 始终返回 null

c# - 如何确定对象是 <type> 还是 <type> 的后代

javascript - vb .net,涉及严格模式的javascript问题