Я сделал несколько тестов для проверки времени доступа к свойствам и полям.
У меня есть этот метод измерения:
static void Measurer(Action act)
{
Stopwatch stop = Stopwatch.StartNew();
for (int i = 0; i < 10000000; i++)
{
act.Invoke();
}
stop.Stop();
Console.WriteLine(stop.Elapsed);
}
У меня есть простой класс с некоторыми свойствами и полями, поэтому у меня есть два теста для этого:
Measurer(() =>
{
built1.LevelID = built.LevelID;
built1.Enabled = built.Enabled;
built1.Profile = built.Profile;
built1.Modes = built.Modes;
});
Measurer(() =>
{
built1.levelID = built.levelID;
built1.enabled = built.enabled;
built1.profile = built.profile;
built1.modes = built.modes;
});
Я также тестирую разные методы отражения, но здесь эти тесты только для того, чтобы показать разницу. Проект для фреймворка 4.5. Итак, я создаю проект в выпуске x64, когда я запускаю свой ноутбук с процессором i5 в Windows 7, у меня есть следующие результаты:
У меня есть доступ к серверной машине, на которой я решил протестировать, это Xeon E560 2,4 Ghz с 2 процессорами на Windows Server 2008 R2, и у меня есть такой результат:
Так почему у меня такая большая разница на лучшей машине? Что вызывает эту разницу? Есть предположения? Я могу думать по-разному, но это будут только предположения, может кто-то знает, почему?