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

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

С++

C++

C/C++
Оптимизация производительности
Оптимизация

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

Целевая аудитория

C и C++ Linux-разработчики.

Тезисы

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

Разрабатывают на заказ высокопроизводительные системы обработки сетевого трафика и сложные СУБД. Одни из основных контрибьюторов MariaDB. Разработали первое ядро Postitive Technologies Application Firewall — WAF из Gartner Magic Quadrant 2015. Разрабатывают очень быстрый opensource-гибрид web-акселератора и файервола Tempesta FW (https://github.com/tempesta-tech/tempesta).

Видео