using System;
using System.Diagnostics;
public class Person
{
public Person(string name, int age)
{
Age = age;
Name = name;
}
public int Age { get; set; }
public string Name { get; set; }
}
public class Test
{
public static void Main()
{
Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = 0; i < 1000000; i++)
{
Person p = new Person("John", 35);
var age = p.Age;
var name = p.Name;
}
Console.WriteLine("Loop with inner allocation took {0}", sw.Elapsed);
Stopwatch sw2 = new Stopwatch();
sw2.Start();
Person px = new Person("John", 35);
for (int i = 0; i < 1000000; i++)
{
var age = px.Age;
var name = px.Name;
}
Console.WriteLine("Loop with outter allocation took {0}", sw2.Elapsed);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uRGlhZ25vc3RpY3M7CgpwdWJsaWMgY2xhc3MgUGVyc29uCnsKICAgIHB1YmxpYyBQZXJzb24oc3RyaW5nIG5hbWUsIGludCBhZ2UpCiAgICB7CiAgICAgICAgQWdlID0gYWdlOwogICAgICAgIE5hbWUgPSBuYW1lOwogICAgfQoKICAgIHB1YmxpYyBpbnQgQWdlIHsgZ2V0OyBzZXQ7IH0KICAgIHB1YmxpYyBzdHJpbmcgTmFtZSB7IGdldDsgc2V0OyB9Cn0KCnB1YmxpYyBjbGFzcyBUZXN0CnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKICAgICAgIFN0b3B3YXRjaCBzdyA9IG5ldyBTdG9wd2F0Y2goKTsKICAgICAgIHN3LlN0YXJ0KCk7CiAgICAgICAKICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwMDAwMDsgaSsrKQogICAgICAgewogICAgICAgICAgUGVyc29uIHAgPSBuZXcgUGVyc29uKCJKb2huIiwgMzUpOwogICAgICAgICAgdmFyIGFnZSA9IHAuQWdlOwogICAgICAgICAgdmFyIG5hbWUgPSBwLk5hbWU7CiAgICAgICB9CgogICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIkxvb3Agd2l0aCBpbm5lciBhbGxvY2F0aW9uIHRvb2sgezB9Iiwgc3cuRWxhcHNlZCk7CgogICAgICAgU3RvcHdhdGNoIHN3MiA9IG5ldyBTdG9wd2F0Y2goKTsKICAgICAgIHN3Mi5TdGFydCgpOwogICAgICAgUGVyc29uIHB4ID0gbmV3IFBlcnNvbigiSm9obiIsIDM1KTsKCiAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDAwMDA7IGkrKykKICAgICAgIHsKICAgICAgICAgIHZhciBhZ2UgPSBweC5BZ2U7CiAgICAgICAgICB2YXIgbmFtZSA9IHB4Lk5hbWU7CiAgICAgICB9CgogICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIkxvb3Agd2l0aCBvdXR0ZXIgYWxsb2NhdGlvbiB0b29rIHswfSIsIHN3Mi5FbGFwc2VkKTsKCX0KfQ==