Показать сообщение отдельно

  #63  
Старый 24.08.2025, 14:17
guidesoul
Новичок
Регистрация: 26.07.2025
Сообщений: 0
С нами: 423479

Репутация: 0
По умолчанию

Возврат к лучшему

Версия "без аллокаций", имеющая простую и понятную структуру циклов, показала значительный прирост производительности с флагом -march=native.

Версия с "развернутыми" вручную циклами, которая была немного быстрее в стандартной компиляции, с новым флагом оказалась медленнее.
Это произошло потому, что ручные изменения помешали компилятору применить его собственные, более совершенные эвристики, включая авто-векторизацию (использование SIMD-инструкций).

Тестирование кода ("без аллокаций") на 1 000 000 итераций:

Без -march=native: ~3643 мс

С -march=native: ~3005 мс


Основываясь на этих данных, было принято решение вернуть код криптографического ядра к версии "без аллокаций".

Этот вариант, будучи скомпилированным с флагом -march=native, является абсолютным чемпионом по производительности, оставаясь при этом 100% совместимым и надежным.

Рекомендуемые команды для сборки с помощью Clang

32-битная версия (x86):

clang++ -Wall -Wextra -O3 -march=native -std=c++20 -s -o "$(NAME_PART).exe" "$(FILE_NAME)" "qrcodegen.cpp" "miniz.c" -static -mwindows -municode -lcomctl32 -lgdi32 -luser32 -lbcrypt -lmapi32 -lshlwapi -lwer -lpsapi

64-битная версия (x64):

clang++ -m64 -Wall -Wextra -O3 -march=native -std=c++20 -s -o "$(NAME_PART)_x64.exe" "$(FILE_NAME)" "qrcodegen.cpp" "miniz.c" -static -mwindows -municode -lcomctl32 -lgdi32 -luser32 -lbcrypt -lmapi32 -lshlwapi -lwer -lpsapi

Скачать можно в облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Ответить с цитированием