Версии 16.3 и 16.4 Visual Studio 2019 принесли много новых улучшений в качестве генерации кода, пропускной способности сборки и безопасности. Если вы еще не загрузили свою копию, вот краткий обзор того, что вы упустили.
Демонстрация C ++ Build Insights, нового набора инструментов анализа сборки в Visual Studio 2019 версии 16.4.
Хотите ли вы воспользоваться всеми этими улучшениями? Если да, скачивайте последнюю версию Visual Studio 2019 и делитесь мнениями!
Демонстрация C ++ Build Insights, нового набора инструментов анализа сборки в Visual Studio 2019 версии 16.4.
Visual Studio 2019 версии 16.3
- Поддержка автоматического векторизатора AVX-512 в параметре /arch:AVX512, позволяющая выполнять логические, арифметические операции, операции с памятью и векторами сокращения, нацеленные на набор инструкций AVX-512.
- Улучшения в общем инлайнере путем оценки значений переменных и памяти. Включено в /Ob3.
- Улучшения встраивания небольших функций для ускорения сборки и более эффективного встраивания.
- Частичная возможность встраивания через косвенные вызовы функций
- Пакет alias-ов, управляемых потоком данных, добавлен в оптимизатор SSA, что обеспечивает более мощную оптимизацию на основе SSA.
- Усовершенствования оптимизации общего подвыражения (CSE) направлены на устранение большей загрузки памяти.
- Вычисление во время компиляции сравнений оператора spaceship на строковых литералах.
- Автоматическое преобразование fma, fmal, fmaf и std::fma во внутреннюю реализацию FMA, если это поддерживается.
- Оптимизированная генерация кода при возврате структур размером с регистр с использованием битовых манипуляций с регистрами вместо операций с памятью.
- Функции __iso_volatile_loadxx и __iso_volatile_storexx, которые позволяют прямое атомарное чтение и запись целочисленных значений.
- Внутренние версии большинства функций AVX-512, которые ранее были реализованы в виде макросов.
- Улучшения в выборе инструкций для встроенных функций mm_shuffle и _mm_setps в /arch:AVX2.
- Досутпность FrameHandler4 (FH4) по умолчанию для платформы AMD64.
Visual Studio 2019 версии 16.4
- Поддержка AddressSanitizer (ASAN), что позволяет обнаруживать проблемы безопасности памяти во время выполнения.
- C++ Build Insights, новая коллекция инструментов для понимания и улучшения времени сборки.
- Значительное улучшение времени генерации кода благодаря использованию до 24 потоков вместо 4, в зависимости от доступных ядер ЦП.
- Дальнейшее улучшение времени генерации кода за счет улучшения алгоритмов и структур данных, используемых компилятором.
- Введение новой опции компилятора /d2ReducedOptimizeHugeFunctions для сокращения времени генерации кода за счет исключения дорогих оптимизаций для функций с более чем 20 000 инструкций. Этот порог можно настроить с помощью параметра /d2ReducedOptimizeThreshold:#.
- Усовершенствования автоматического векторизатора AVX-512, поддержка большего количества форм команд: сравнение переменной ширины, умножение int32, преобразование с плавающей точкой в int-fp. Доступно в /arch:AVX512.
- Улучшенный анализ потока контроля, чтобы лучше определять, когда значения доказуемо положительны или отрицательны.
- Включение расширенного inliner, введенного в 16.3 по умолчанию, без использования /Ob3.
- Встроенная поддержка инструкций ENQCMD и ENQCMDS, которые пишут команды для постановки в регистр.
- Встроенная поддержка инструкций RDPKRU и WRPKRU, которые считывают и записывают регистр PKRU, доступный в некоторых процессорах Intel.
- Встроенная поддержка инструкций VP2INTERSECTD и VP2INTERSECTQ, которые генерируют пару масок, указывающих, какие элементы одного вектора соответствуют элементам другого вектора.
Хотите ли вы воспользоваться всеми этими улучшениями? Если да, скачивайте последнюю версию Visual Studio 2019 и делитесь мнениями!