![](/img/trans.png)
[英]FileNotFoundException in ApplicationSettingsBase
[英]Slow ApplicationSettingsBase
當在多線程場景中使用時,應用程序設置機制(派生自ApplicationSettingsBase)似乎是一個真正的瓶頸。 特別是,當經常查詢屬性時,它們引入的並發性會減慢我的循環。 無論如何我喜歡使用它們來獲得那些不錯的應用程序配置選項。 但也許我需要將它們包裝到我自己的緩存中呢?
誰有同樣的問題? 我錯過了什么嗎? 我想,ApplicationSettingsBase是否已經緩存了所有設置? 為什么它似乎從多個線程鎖定訪問? 什么是常見的解決方法?
我真的建議在對象中包裝任何類型的“獲取設置”功能並將其隱藏在接口后面。 我們強烈打字,所以我們有:
public class Worker
{
private readonly ISettings settings;
public Worker (ISettings settings)
{
this.settings = settings;
}
public void Work ()
{
for (int i = 0; i < settings.MaxWorkerIterations (); i++)
{ ... }
}
}
public interface ISettings
{
int MaxWorkerIterations ();
}
public class AppConfigSettings
{
public int MaxWorkerIterations ()
{
return (int) ApplicationSettings["MaxWorkerIterations"];
}
}
這具有(主要)編譯時檢查和易測試性的好處。 您還可以將AppConfigSettings類重寫為CachingAppConfigSettings類,它可以實現顯而易見的功能。
在線程安全設置機制中我沒有看到奇怪的東西? 如果它使你的高速並發theads減慢,你應該嘗試使用局部變量而不是再次快速查詢getsetting。 我認為重新設計您的設置請求機制將有助於大大提高性能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.