2014-10-23 4 views
0

я запустил один и тот же проект под различными платформами VS, время были следующие:Различное время работы на разных платформах Visual Studio?

  • VS2010 - x64: 114 мс
  • VS2010 - х32: +1078 мс
  • VS2013 - 64: 112 мс
  • VS2013 - х32: 84 мс

Так у меня есть следующие вопросы:

  1. Является ли это нормальным, что время изменяется в основном под разными платформами VS?
  2. На какое время я должен рассчитывать?

Дополнительная информация:

  • Все они работают в режиме выпуска без отладки (Ctrl + F5).
  • Все время уже усреднено по вычислению несколько раз.
  • Все тесты проводятся на одном ПК.
+0

Вы чистили и ремонтировали перед каждым испытанием? Перед всеми испытаниями оба VS2010 и VS2013 уже установлены? – Raptor

+0

@Raptor Я попробовал очистить и перестроить, получилось аналогичные результаты. И, да, установлены VS2010 и VS2013. – herohuyongtao

+0

Зависит от многих вещей, таких как код, который вы тестируете? Как выглядит вывод компилятора? Вы запустили его N раз и взяли среднее? И т. Д. – paulm

ответ

1

Это хороший вопрос. Мы только что сделали много такого типа тестирования по очень маленькому фрагменту кода. По общему признанию, в UNIX, но принципы и проблемы там одинаковы.

Этот 32-разрядный результат VS2010 удивителен, но я буду размышлять о том, почему. Вместо этого запустите профайлер над кодом. Это покажет вам, где все это время предпринимается. Затем вы можете сравнить выходы на языке ассемблера из разных версий этой горячей точки, и ответ неизбежно выскочит.

И ответить на ваши два конкретных вопроса:

Timing гарантирует Если вы не можете контролировать спецификацию оборудования и другого программного обеспечения, запущенного на целевой системе, то нет никаких гарантий времени.

Временное отклонение от компилятора Время может варьироваться в зависимости от платформы, компилятора и версии компилятора. Однако, используя профилировщик, вы можете согласиться с тем, что критический по времени код у вас такой же хороший, как и для любой конкретной сборки.

Справочные материалы

  1. профилирование под Windows: http://msdn.microsoft.com/en-us/library/ms182372.aspx
  2. Документах по оптимизации C++ и ассемблер: http://www.agner.org/optimize/
  3. Пропустить первые 20 минут: https://www.youtube.com/watch?v=rX0ItVEVjHc Майк Актон показывает разницу в сборе языковые выходы между разными компиляторами и рассказывает о методах оптимизации.