gpt4 book ai didi

c# - ConfigurationManager.AppSettings 性能问题

转载 作者:IT王子 更新时间:2023-10-29 04:25:04 25 4
gpt4 key购买 nike

我计划将所有配置设置存储在应用程序的 app.config 部分(使用 ConfigurationManager.AppSettings 类)。当用户使用应用程序的 UI 更改设置(单击复选框、选择单选按钮等)时,我计划将这些更改写入 AppSettings。同时,在程序运行时,我计划从一个不断处理数据的进程中不断访问 AppSettings。通过 UI 更改设置需要实时影响数据处理,这就是进程将不断访问 AppSettings 的原因。

就性能而言,这是个好主意吗?使用 AppSettings 应该是编写 .Net 应用程序时存储和访问配置设置的“正确方法”,但我担心这种方法不适用于恒定负载(至少在不断读取设置)。

如果有人有这方面的经验,我将不胜感激。

更新:我应该澄清几点。

这不是 Web 应用程序,因此将数据库连接到应用程序可能仅仅为了存储配置设置就有些矫枉过正了。这是一个 Windows 窗体应用程序。

根据 MSDN 文档,ConfigurationManager 不仅用于存储应用程序级设置,还用于存储用户设置。 (例如,如果应用程序作为部分信任的应用程序安装,则尤为重要。)

更新 2: 我接受了 lomaxx 的回答,因为 Properties 确实看起来是一个不错的解决方案,而无需向我的应用程序添加任何额外的层(例如数据库) .使用 Properties 时,它已经完成了其他人建议的所有缓存。这意味着任何更改和后续读取都在内存中完成,使其速度非常快。属性仅在您明确告知时才将更改写入磁盘。这意味着我可以在运行时即时更改配置设置,然后仅在程序退出时才将最终保存到磁盘。

为了验证它是否真的能够处理我需要的负载,我在笔记本电脑上进行了一些测试,使用 Properties 每秒能够进行 750,000 次读取和 7,500 次写入。这远远超出了我的应用程序永远甚至接近需要的范围,我觉得在不影响性能的情况下使用 Properties 非常安全。

最佳答案

由于您使用的是 winforms 应用程序,如果它在 .net 2.0 中,则实际上有一个用户设置系统(称为属性)是为此目的而设计的。 This article on MSDN对此有很好的介绍

如果您仍然担心性能,请查看 SQL Compact Edition它与 SQLite 类似,但我发现它是 Microsoft 提供的产品,可以很好地与 winforms 配合使用,甚至可以 make it work with Linq

关于c# - ConfigurationManager.AppSettings 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com