【问题标题】:Singleton VS Static Class, Performance Wise?单例 VS 静态类,性能明智?
【发布时间】:2017-10-12 06:40:37
【问题描述】:

我经常遇到为存储应用程序的运行时数据而创建单例或静态类的困境。

我们说

public static class DataManager
{
    public static int a = 0;
    public static int b = 0;
    public static int c = 0;
}

这允许我只调用 DataManager.a

    public class DataManager
    {

      private static DataManager _sharedInstance = new DataManager();

        static internal DataManager SharedInstance()
        {
            return _sharedInstance;
        }

        public int a = 0;
        public int b = 0;
        public int c = 0;
}

在这个调用中,我必须调用 DataManager.SharedInstance().a

两种方式都行。但我想知道哪个更适合我的应用程序的内存和性能。假设我的数据很大并且包含许多其他集合。

提前致谢。

【问题讨论】:

  • 尝试两者并比较性能。我希望静态更快,但你永远无法确定。
  • 您是否曾经更改过存储在静态或单例中的这些值?
  • 关于单例类你缺少的一件事是,你必须有一个私有构造函数,否则可以在代码的任何地方创建另一个实例!关于性能我不确定是否会有任何差异,但在可用性方面,您可以继承单例类但不能继承静态类。
  • 我总是选择第二个选项(使用Lazy)以便能够在测试期间切换数据,除非它被测量(在生产条件下)慢得令人窒息
  • Which is faster?。也适用于内存占用。你的问题太宽泛了,甚至没有足够的上下文来让任何人正确回答。根据情况,两者都可以更快/使用更少的内存。唯一正确的答案是让您测试两者,看看哪个符合您的特定性能目标。没有任何具体的绩效目标?那么你的担心完全为时过早,甚至不值得考虑。

标签: c# xamarin.forms


【解决方案1】:

显然,第一种方法更简单、更短——无论是在阅读方面,还是在性能和​​内存方面。

在第二个代码中,两个额外的构造会产生一点开销。

【讨论】:

    猜你喜欢
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 2012-12-02
    • 1970-01-01
    • 2011-06-11
    相关资源
    最近更新 更多