簡體   English   中英

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM