Набор инструментов платформы Visual Studio 2017 VC ++ v141 медленнее, чем v100, почему? - PullRequest
0 голосов
/ 26 сентября 2018

Я переписывал некоторый алгоритм S3TC, и во время профилирования оптимизаций, которые я тестировал, я использовал vs2010.После того, как я закончил писать код, решил профилировать его на платформе v141.Клонированное отдельное решение и файлы проекта как клоны оригинала и загруженное решение в vs2017.Перенацелил профилированный проект на набор инструментов платформы v141, Windows SDK 10, очистил и перестроил все, сделал это несколько раз ...

Профилирование вызвано падением производительности только для Release версии, в то время какОтладочная версия имела очень похожие значения для отладки vs2010.Измеренное падение в версии Release составило ~ 11% и удержание.Проверенные оптимизации в свойствах проекта.И все было точно так же, как и в vs2010.После чего я переориентировался обратно на набор инструментов платформы v100, оставив Windows SDK 10 и перестроив все заново.Профилирование привело к тому же результату, что и профилирование против 2010 года.Вернулся к v141, зарегистрировав падение производительности на ~ 11%.Что говорит мне о том, что набор инструментов платформы v141 имеет менее эффективный компилятор c / c ++ по сравнению с набором инструментов платформы v100.

Кто-то сталкивался с этим раньше и обнаружил причину такого поведения в новом поколении компилятора?

Кто-нибудь делал какую-либо предварительную обработку файла и сравнивает коды из обоих, и выясняет, чего не хватает в v141?

Это падение отличных кодеров в команде MS compiler, или я что-то здесь упускаю?

1 Ответ

0 голосов
/ 26 сентября 2018

В последнее время в новостях появлялись эксплойты против спекулятивного выполнения в ЦП, известные примеры - «Спектр» и «Обвал».

Один из способов решения этих проблем - в компиляторе

Пониманиевлияние на производительность мер по смягчению последствий для Spectre и Meltdown для систем Windows

"Ниже приведено краткое изложение того, что [Microsoft] обнаружило до сих пор:

• С Windows 10 на более новом кремнии (2016 г.-Era ПК с Skylake, Kabylake или более новым процессором), тесты показывают однозначные замедления, но мы не ожидаем, что большинство пользователей заметят изменение, поскольку эти проценты отражаются в миллисекундах.

• При включенной Windows 10более старые кремниевые ПК (компьютеры эпохи 2015 года с процессором Haswell или более старые), некоторые тесты показывают более существенное замедление, и мы ожидаем, что некоторые пользователи заметят снижение производительности системы.

• В Windows 8 и Windows 7 на более старыхSilicon (ПК эпохи 2015 года с процессором Haswell или более старыми), мы ожидаем, что большинство пользователей заметят снижениеm производительность.

• Windows Server на любом кремнии, особенно в любом приложении, интенсивно использующем ввод-вывод, демонстрирует более существенное влияние на производительность, когда вы включаете средства защиты, чтобы изолировать ненадежный код в экземпляре Windows Server.Вот почему вы хотите быть осторожными, чтобы оценить риск ненадежного кода для каждого экземпляра Windows Server и сбалансировать компромисс между безопасностью и производительностью для вашей среды. "

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

...