У меня есть три метода в c #, которые запускают один и тот же код, но с небольшой разницей, мой первый блок кода -
Stopwatch s = new Stopwatch();
object o = new object();
s.Start();
for (int i = 0; i < 100000000; i++)
{
o.ToString();
o.GetType();
o.GetHashCode();
}
s.Stop();
Console.WriteLine(s.ElapsedMilliseconds); //3100ms
и это стоит 3100 мс для запуска. Затем, если я сделаю инициализацию объекта внутри for, это увеличится до 7200ms, мой блок кода будет выглядеть так:
Stopwatch s = new Stopwatch();
s.Start();
for (int i = 0; i < 100000000; i++)
{
object o = new object();
o.ToString();
o.GetType();
o.GetHashCode();
}
s.Stop();
Console.WriteLine(s.ElapsedMilliseconds);//7200ms
Однако, если я инициализирую свой объект, но не использую какой-либо метод внутри, это будет стоить 652 мс. И мой код такой же,
Stopwatch s = new Stopwatch();
s.Start();
for (int i = 0; i < 100000000; i++)
{
object o = new object();
}
s.Stop();
Console.WriteLine(s.ElapsedMilliseconds);//625ms
Интересно, 3100мс + 625мс несопоставимо с 7200мс. Что вызывает такую большую разницу между первыми двумя?