gpt4 book ai didi

c# - N 个静态字段与单个静态实例

转载 作者:太空宇宙 更新时间:2023-11-03 13:07:55 25 4
gpt4 key购买 nike

我正在研究单例格式,它与我以前使用的非常相似。

我的问题是,这两种方法在内存和/或性能方面是否存在差异?第二种选择是否更快,足以弥补其更大的写入和读取使用量?

示例代码:

方法一

public static class TheSomething {
public static String Title;
public static String Description;
public static String HowIsIt;
public static int TimesSeenCount;
public static List<Long> PeopleWhoSawIt;
public static List<Session> PeopleSeeingIt;

// now some math mumbo jumbo just to increase the memsize of this:
public static double posX;
public static double posY
public static double posZ;
public static double velX;
public static double velY;
public static double velZ;
public static double accX;
public static double accY;
public static double accZ;
public static double rotX;
public static double rotY;
public static double rotZ;
public static double rotVelX;
public static double rotVelY;
public static double rotVelZ;
public static double rotAccX;
public static double rotAccY;
public static double rotAccZ;
public static List<Vertex> Geometry;
}

用于:

++TheSomething.PeopleWhoSawIt;

方法二

public static class TheSomething {
private static TheSomething _instance;
public static Instance {
get {
if(_instance == null)
_instance = new TheSomething();
} private set {
_instance = value;
}
}
private TheSomething() {}
public String Title;
public String Description;
public String HowIsIt;
public int TimesSeenCount;
public List<Long> PeopleWhoSawIt;
public List<Session> PeopleSeeingIt;

// now some math mumbo jumbo just to increase the memsize of this:
public double posX;
public double posY
public double posZ;
public double velX;
public double velY;
public double velZ;
public double accX;
public double accY;
public double accZ;
public double rotX;
public double rotY;
public double rotZ;
public double rotVelX;
public double rotVelY;
public double rotVelZ;
public double rotAccX;
public double rotAccY;
public double rotAccZ;
public List<Vertex> Geometry;
}

用于:

++TheSomething.Instance.PeopleWhoSawIt;

最佳答案

就性能而言,这两种选择都不会给您带来实质性的改进。它们属于微优化范围,不会对现实场景产生太大影响(如果有的话)。

从设计的角度来看,这两个选项都非常糟糕,第一个尤其邪恶。一般来说,单例模式不受欢迎,因为开发人员倾向于滥用和忽视与之相关的各种副作用,例如占用内存或资源或缺乏多线程支持。

如果您仍然需要该类的单个实例,请尝试使用依赖注入(inject)容器而不是将类本身设计为单例。

关于c# - N 个静态字段与单个静态实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30134897/

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