Конференция завершена. Ждем вас на HighLoad++ в следующий раз!

Что могут C и C++, и когда нужен ассемблер

C++

Доклад принят в программу конференции

Тезисы

C и C++ известны скоростью сгенерированного кода. Однако, код генерируется конкретным компилятором под конкретную ОС на конкретное железо. Расширения компиляторов позволяют генерировать еще более быстрый код, чем для "чистых" C и C++. Микропроцессоры тоже предоставляют свои расширения, которые недоступны даже для расширений компилятора и для использования которых нужен ассемблер.

В этом докладе мы посмотрим, какой код генерируют GCC и Clang для некоторых C и C++ конструкций и как сделать этот код быстрее. Мы также копнем в специфичные для x86-64 оптимизации. Обсудим микробенчмарки.

* Как x86-64 исполняет код и как работает с памятью.
* Некоторые полезные расширения и оптимизации GCC и Clang для C и C++.
* Когда ассемблер x86-64 не только быстрее, но и проще C.
* Скользкие места программирования для многоядерных архитектур
* Защита от Spectre в компиляторах.
* Profiler guided optimization (PGO) и когда она бесполезна.

Основатель и системный архитектор Tempesta Technologies, эксперт в области высокопроизводительных вычислений в Linux/x86-64.

Tempesta Technologies

Видео