Я ищу ресурсы (в идеале книгу), которые помогут мне получить глубокое понимание производительности С++. Здесь немного больше фона:
Я пишу серверное программное обеспечение с очень высокими требованиями к пропускной способности и/или с низкой задержкой. Мы пишем в С++; в настоящее время это не совсем для обсуждения. Большинство моих коллег, похоже, гораздо лучше понимают производительность С++. У них лучшие ментальные модели, поэтому они могут сказать, что некоторая часть кода будет плохо работать в масштабе. Мне не хватает этого понимания, и поэтому я хочу улучшить свою ментальную модель.
Меня особенно интересует:
- Понимание эффектов кеша и то, как локальность кэша из-за макета объекта влияет на производительность моего кода. Это проблема номер один, которая, похоже, воспитывается другими членами моей команды.
- Понимание того, как распределение памяти влияет на производительность. Должен ли я использовать TCMalloc (или другие mallocs) и как я должен знать? Как мне настроить различные параметры распределения и освобождения?
- Как я узнаю, когда накладные расходы от копирования объектов будут иметь значение (и, следовательно, должны переключаться на указатели, например)?
- Меня обычно интересуют "оптимизации", если у меня есть информация о том, когда их использовать.
Вещи, которые меня не интересуют:
- "Высокопроизводительные вычисления", термин, который, по-видимому, указывает на большее количество приложений, ориентированных на математику и симуляцию.
- Обсуждение производительности С++ по сравнению с другими языками, поскольку я застрял в С++.
В качестве отправной точки, кто-нибудь знает, соответствует ли эта книга Efficient С++ счету?