Я искал одноформатный формат, он очень похож на то, что я использовал раньше.N статических полей против одиночного статического экземпляра
Вопрос в том, есть ли разница между памятью и/или производительностью между этими двумя подходами, является ли второй вариант более быстрым, достаточным для того, чтобы скрыть его использование для записи и чтения?
Ниже приведен пример кода:
Метод 1
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;
Способ 2
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;
Это очень сложный вопрос, и мой ответ будет повторением того, что люди умнее меня уже сказали. Пожалуйста, прочитайте эту статью от SO-чемпиона Джона Скита [Реализация шаблона Singleton в C#] (http://csharpindepth.com/articles/general/singleton.aspx). – CrnaStena
«это быстрее» - это то, на что можно ответить только _you_, запустив действительный тест производительности в реалистичных условиях, похожих на ваш реальный сценарий. Ваш пример не имеет большого смысла (увеличивая экземпляр «List'?), Но, если что-либо, я бы ожидал, что статический класс будет быстрее (возможно, какой-то несущественной или даже неизмеримой суммой), чем синглтон. В лучшем случае вопрос здесь слишком широк, и в худшем случае не содержит достаточной информации для тех, кто может ответить на него по вашему конкретному сценарию. –