Разница результатов теста на различном процессоре

Я сделал несколько тестов для проверки времени доступа к свойствам и полям.

У меня есть этот метод измерения:

  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, и у меня есть такой результат:

введите здесь описание изображения

Так почему у меня такая большая разница на лучшей машине? Что вызывает эту разницу? Есть предположения? Я могу думать по-разному, но это будут только предположения, может кто-то знает, почему?


person Andriy Kizym    schedule 20.03.2014    source источник
comment
Эти две системы не совсем яблоки к яблокам. Вы говорите, что это сервер — что еще он делал? Сервер 32-битный или 64-битный? Процессор ноутбука работает быстрее? Это разные процессоры (количество ядер, вероятно, не имеет значения).   -  person ThatBlairGuy    schedule 20.03.2014
comment
сервер 64-битный, как и Windows 7, я компилирую только для цели x64. Сервер 2,4 ГГц, ноут 2,5 ГГц. Я не ожидал, что это может повлиять на время доступа к свойствам или полям. Почти в два раза медленнее!   -  person Andriy Kizym    schedule 20.03.2014
comment
Xenon — более раннее поколение процессоров, чем i5. Это, вероятно, повлияет. Другими потенциальными отличиями являются объем кэш-памяти и скорость шины. Как сказал RQDQ, у вас есть много переменных.   -  person ThatBlairGuy    schedule 20.03.2014
comment
Я понимаю это, но я не ожидал, что это будет медленнее почти в два раза, и это сервер, он должен быть лучше, чем ноутбук, бросьте. Я не сравниваю с супер старым сервером.   -  person Andriy Kizym    schedule 20.03.2014
comment
@anderhil - это также зависит от того, какая у вас версия i5. i5-4340M может работать на частоте до 3,6 ГГц (в 1,5 раза быстрее, чем сервер).   -  person RQDQ    schedule 21.03.2014


Ответы (1)


Здесь есть ряд переменных, из-за которых будет трудно точно определить, откуда берется разница во времени. Ваши две среды сильно различаются:

  • Различное оборудование (процессор, оперативная память, материнская плата и т. д.)
  • Различные версии операционной системы
  • Работает различное программное обеспечение/сервисы

Кроме того, если вы запускаете серверную версию через удаленный рабочий стол, это также повлияет на ваше время.

Чтобы получить больше полезных данных из этого теста, вам придется контролировать больше переменных (та же операционная система, та же конфигурация программного обеспечения и т. д.).

ИЗМЕНИТЬ – удаленный рабочий стол

Некоторые мысли о том, почему выполнение этого через удаленный рабочий стол может повлиять на время:

  • Операции Console.Write могут блокироваться. См. этот вопрос. То, как написан ваш тест, теоретически не должно иметь большого значения, но я недостаточно знаю обо всем стеке реализации, чтобы знать, имеет ли это различие значение в вашем случае.
  • Windows намеренно делает все по-другому под прикрытием сеанса удаленного рабочего стола. Элементы, которые приходят на ум, связаны с рендерингом оконных форм, но, вероятно, есть и другие отличия.
person RQDQ    schedule 20.03.2014
comment
Я думал обо всем этом, но почему он медленнее, вот в чем вопрос. Сервер мощнее, время всегда одинаковое, дельта небольшая, но цифры не сильно меняются при многократном запуске. Можете ли вы подробнее объяснить, почему удаленный рабочий стол влияет на время? - person Andriy Kizym; 20.03.2014
comment
@anderhil Я добавил еще несколько мыслей о различиях удаленных рабочих столов. Кроме того, ни один из этих факторов не влияет на нагрузку, которую испытывает ваш сервер во время теста. Что еще делает этот сервер? Это веб-сервер/файловый сервер/и т. д.? - person RQDQ; 20.03.2014
comment
это тот сервер, на который мы планируем переехать, поэтому он сейчас не загружен. Но мой Console.WriteLine находится за пределами измерительного блока, и я останавливаю секундомер перед записью в консоль. - person Andriy Kizym; 20.03.2014
comment
У вас есть физический доступ к серверу, чтобы запустить его там? Мне любопытно, почувствуете ли вы какую-либо существенную разницу, работая там. - person RQDQ; 20.03.2014