eisernWolf: >>Интересно ктонибудь догадается какой способ лучше и почему . Второй разумеется, ибо удобнее и гибче. . P.S. Я даже готов согласиться, что лучше первый... если ты мне предоставишь диаграммы производительности и обоснуешь результат
я не выдержал и решил проверить сам
using System;
using System.Diagnostics;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
//Тесты надо запускать с перезапуском программы
test1(); //~283
//test2(); //~450
Console.ReadLine();
}
static int count = 10000000;
static void test1()
{
Stopwatch sw = Stopwatch.StartNew();
MyClass1 m;
for (int i = 0; i < count; ++i)
{
m = new MyClass1();
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
}
static void test2()
{
Stopwatch sw = Stopwatch.StartNew();
MyClass2 m;
for (int i = 0; i < count; ++i)
{
m = new MyClass2();
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
}
public class MyClass1
{
public MyClass1() : this("DefaultValue1", "DefaultValue2", "DefaultValue3")
{
}
public MyClass1(string str1) : this(str1, "DefaultValue2", "DefaultValue3")
{
}
public MyClass1(string str1, string str2) : this(str1, str2, "DefaultValue3")
{
}
public MyClass1(string str1, string str2, string str3)
{
this.str1 = str1;
this.str2 = str2;
this.str3 = str3;
}
string str1;
string str2;
string str3;
}
public class MyClass2
{
public MyClass2(): this("DefaultValue1")
{
}
public MyClass2(string str1): this(str1, "DefaultValue2")
{
}
public MyClass2(string str1, string str2): this(str1, str2, "DefaultValue3")
{
}
public MyClass2(string str1, string str2, string str3)
{
this.str1 = str1;
this.str2 = str2;
this.str3 = str3;
}
string str1;
string str2;
string str3;
}
}
}
почти в двое больше и это при четырех конструкторах!
static void test3()
{
Stopwatch sw = Stopwatch.StartNew();
MyClass3 m;
for (int i = 0; i < count; ++i)
{
m = new MyClass3();
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
}[c#]
public class MyClass3
{
public MyClass3(): this("DefaultValue1")
{
}
public MyClass3(string str1): this(str1, "DefaultValue2")
{
}
public MyClass3(string str1, string str2): this(str1, str2, "DefaultValue3")
{
}
To Nimnul: Я примерно такого результата и ждал, только не в таком гипертрофированном формате 10.000.000 объектов... Ну-ну. А теперь уменьши это число до более реальных 10 штук, нет, лучше 10.000 штук... Ну чтобы более правдоподобно было И сравни результаты. 0 = 0 не так ли? Какой мне смысл на спичках экономить? Буду использовать то, что удобнее и проще. .NET для этого и разрабатывался. Разницу в 2 мс на 100.000 объектов мои клиенты не оценят
P.S. А меня всегда в тебе удивляло, почему ты не на плюсах пишешь? Ведь софт сишный куда как быстрее работает...
eisernWolf:
To Nimnul: Я примерно такого результата и ждал, только не в таком гипертрофированном формате 10.000.000 объектов... Ну-ну. А теперь уменьши это число до более реальных 10 штук, нет, лучше 10.000 штук... Ну чтобы более правдоподобно было И сравни результаты. 0 = 0 не так ли? Какой мне смысл на спичках экономить? Буду использовать то, что удобнее и проще. .NET для этого и разрабатывался. Разницу в 2 мс на 100.000 объектов мои клиенты не оценят P.S. А меня всегда в тебе удивляло, почему ты не на плюсах пишешь? Ведь софт сишный куда как быстрее работает...
А теперь добавь в тест еще три конструктора, и с десяток полей класса. Где ты видел классы с тремя полями?
Здравствуйте, Nimnul, Вы писали:
N>а "" по одному на каждый домен как минимум, и на весь процесс как максимум. N> Более того сравнение со String.Empty как минимум втрое медленее чем с "", ваши знания очень поверхностны молодой человек
А, вот и клоун появился. Снова решил GDN попозорить.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.