Решил написать про то, как я уже n-ой по счёту С++ команде, которая пытается найти немного extra перфа в их программе, пропатчить их сборку.



TL;DR

1. Используйте Clang

2. -O3

3. -fexperimental-new-pass-manager

4. -mllvm -inline-threshold=1000

5. -flto=thin

6. Используйте libcxx

7. Используйте макросы _LIBCPP_ABI_ENABLE_UNIQUE_PTR_TRIVIAL_ABI и _LIBCPP_ABI_ENABLE_SHARED_PTR_TRIVIAL_ABI, пофиксите скорее всего очень мало мест



Вуаля, процентов 10-15 суммарно вам готово, а также бинарь должен процентов на 10 похудеть. Ну и с примерами как я тестил ClickHouse с этим (ведь он перешёл на clang по дефолту!)



https://danlark.org/2020/10/08/i-need-extra-c-c-performance-now-how/