naw*_*fal 28 c# performance coding-style app-config
毫无疑问,我还没有受到任何阅读速度瓶颈的影响.我要知道; 如果经常阅读app.config是一个糟糕的编程选择.我知道数据库操作变得昂贵.
在我的情况下,我不是在阅读我自己的应用程序的app.config,而是另一个项目的,如下所示:
private string GetAppConfigValue(string key)
{
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = GetConfigFilePath();
Configuration appConfig = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
return appConfig.AppSettings.Settings[key].Value;
}
Run Code Online (Sandbox Code Playgroud)
场景:我有一个管理器类(只有一个这样的类),我必须从物理路径指定的配置文件中读取几个值(3到4),但很多次.需要我有几个成员变量来存储app.config文件中的值吗?什么是最好的方法.谢谢.
Tim*_*ter 19
我确信默认情况下会缓存所有配置文件(web.config或app.config),因此您无需创建包含所有值的静态类,也不必担心永久访问文件.
这是一些阅读:
关于您访问另一个应用程序的配置文件的要求:
MSDN:"这些方法(注:客户机应用程序:ConfigurationManager.GetSection)提供访问缓存的配置值当前应用程序,它具有比配置类更好的表现."
换句话说:是的,当它不是你自己的应用程序的配置文件时,你应该缓存它.
任何以磁盘IO结尾的东西都很昂贵(绝对是在谈论旋转媒体时).
根据杰夫迪恩的说法,看看每个计算机工程师应该知道的数字是多少?在Quora上看到速度上的差异.
如果您反复读取文件,则应缓存结果(特别是如果文件未更改).
使用默认配置时,.config文件只在应用程序启动时读取一次,结果将缓存在内存中.
更新,请求示例:
private Configuration appConfig;
private Configuration GetConfig()
{
if (appConfig != null)
return appConfig;
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = GetConfigFilePath();
appConfig = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
return appConfig;
}
Run Code Online (Sandbox Code Playgroud)
假设它存在于具有应用程序生命周期的类中,那么现在已将内存中的配置缓存到应用程序的生命周期中.
| 归档时间: |
|
| 查看次数: |
11385 次 |
| 最近记录: |