Решил написать про то, как я уже n-ой по счёту С++ команде, которая пытается найти немного extra перфа в их программе, пропатчить их сборку.
TL;DR
1. Используйте Clang
2. -O3
3. -fexperimental-new-pass-manager
4. -mllvm -inline-threshold=1000
5. -flto=thin
6. Используйте libcxx
7. Используйте макросы
Вуаля, процентов 10-15 суммарно вам готово, а также бинарь должен процентов на 10 похудеть. Ну и с примерами как я тестил ClickHouse с этим (ведь он перешёл на clang по дефолту!)
https://danlark.org/2020/10/08/i-need-extra-c-c-performance-now-how/
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/