using System;
using System.Diagnostics ;
namespace ConsoleApplication161
{
class Program
{
static void Main( string[ ] args)
{
const int N = 100 , M = 10000 ;
var a = new Foo { A = 10 , B = 10 } ;
unchecked
{
int trash = 0 ;
Stopwatch sw1 = new Stopwatch( ) , sw2 = new Stopwatch( ) ;
for ( int i = 0 ; i < N; i++ )
{
if ( i % 2 == 0 )
{
for ( int j = 0 ; j < M; j++ )
{
sw1.Start ( ) ;
a.A = j;
sw1.Stop ( ) ;
sw2.Start ( ) ;
a.B = j;
sw2.Stop ( ) ;
trash += a.A + a.B ;
}
}
else
{
for ( int j = 0 ; j < M; j++ )
{
sw2.Start ( ) ;
a.B = j;
sw2.Stop ( ) ;
sw1.Start ( ) ;
a.A = j;
sw1.Stop ( ) ;
trash += a.A + a.B ;
}
}
}
Console.WriteLine ( trash) ;
Console.WriteLine ( "Время доступа к свойству = {0}" , sw1.Elapsed ) ;
Console.WriteLine ( "Время доступа к полю = {0}" , sw2.Elapsed ) ;
Console.WriteLine ( "Разница между ними составляет {0:P} в пользу {1}" , Math.Abs ( 1 - sw1.ElapsedTicks / ( double ) sw2.ElapsedTicks ) , sw1.Elapsed < sw2.Elapsed ? "Свойства" : "Поля" ) ;
}
}
}
class Foo
{
public int A { get; set; }
public int B;
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uRGlhZ25vc3RpY3M7CgpuYW1lc3BhY2UgQ29uc29sZUFwcGxpY2F0aW9uMTYxCnsKICAgIGNsYXNzIFByb2dyYW0KICAgIHsKICAgICAgICBzdGF0aWMgdm9pZCBNYWluKHN0cmluZ1tdIGFyZ3MpCiAgICAgICAgewogICAgICAgICAgICBjb25zdCBpbnQgTiA9IDEwMCwgTSA9IDEwMDAwOwogICAgICAgICAgICB2YXIgYSA9IG5ldyBGb28ge0EgPSAxMCwgQiA9IDEwfTsKCiAgICAgICAgICAgIHVuY2hlY2tlZAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpbnQgdHJhc2ggPSAwOwogICAgICAgICAgICAgICAgU3RvcHdhdGNoIHN3MSA9IG5ldyBTdG9wd2F0Y2goKSwgc3cyID0gbmV3IFN0b3B3YXRjaCgpOwogICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGkgJSAyID09IDApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IE07IGorKykKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3cxLlN0YXJ0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLkEgPSBqOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3cxLlN0b3AoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdzIuU3RhcnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuQiA9IGo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdzIuU3RvcCgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYXNoICs9IGEuQSArIGEuQjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IE07IGorKykKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3cyLlN0YXJ0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLkIgPSBqOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3cyLlN0b3AoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdzEuU3RhcnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuQSA9IGo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdzEuU3RvcCgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYXNoICs9IGEuQSArIGEuQjsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSh0cmFzaCk7CiAgICAgICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgi0JLRgNC10LzRjyDQtNC+0YHRgtGD0L/QsCDQuiDRgdCy0L7QudGB0YLQstGDID0gezB9Iiwgc3cxLkVsYXBzZWQpOwogICAgICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoItCS0YDQtdC80Y8g0LTQvtGB0YLRg9C/0LAg0Log0L/QvtC70Y4gPSB7MH0iLCBzdzIuRWxhcHNlZCk7CiAgICAgICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgi0KDQsNC30L3QuNGG0LAg0LzQtdC20LTRgyDQvdC40LzQuCDRgdC+0YHRgtCw0LLQu9GP0LXRgiB7MDpQfSDQsiDQv9C+0LvRjNC30YMgezF9IiwgTWF0aC5BYnMoMSAtIHN3MS5FbGFwc2VkVGlja3MgLyAoZG91YmxlKXN3Mi5FbGFwc2VkVGlja3MpLCBzdzEuRWxhcHNlZCA8IHN3Mi5FbGFwc2VkID8gItCh0LLQvtC50YHRgtCy0LAiIDogItCf0L7Qu9GPIik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgY2xhc3MgRm9vCiAgICB7CiAgICAgICAgcHVibGljIGludCBBIHsgZ2V0OyBzZXQ7IH0KICAgICAgICBwdWJsaWMgaW50IEI7CiAgICB9Cn0=