Перевод с анrлийскоrо и редакция канд. техн. наук И.В.
Красикова
По общим вопросам обр ащ айтесь в издательс тво "Диалектика" по адресу:
info@dialektika.com, http://www.dialektika.com
Гl9
Гантерот, Курт.
Оптимизация программ на С++. Проверенные методы для повышения производительности.:
Пер. с анrл. -СпБ.:
ООО "Альфа-книrа� 2017.
-400 с.: ил. - Парал. тит. анrл.
ISBN 978-5-9908910-6-7 (рус.)
ББК 32.973.26-018.2.75
Все названия программных продуктов являются зарегистрированными торговыми марками
соответствующих фирм.
Никакая часть настоящего издания ни в каких целях не может быть воспроизведена в какой бы то
ни было форме и какими бы то ни было средствами, будь то электронные или механические, включая
фотокопирование и запись на магнитный носитель, если на это нет письменного разрешения издательства
O'Reilly & Associates.
This translation is puЬlished and sold Ьу permission of O'Reilly Media, lnc., which owns or controls all rights to puЬlish and
sell the same.
All rights reserved. No part of this work may Ье reproduced or transmitted in any form or Ьу any means, electronic or me
chanical, including photocopying,
recording, or Ьу any information storage or retrieval system, without the prior written permission of the copyright owner and
the PuЬlisher.
Научно-популярное издание
Курт Гаитерот
Оптимизация проrрамм на С++
Проверенные методы для повышения производительности
Литературный редактор
Верстка
Художест ве н ный редактор
Корректор
Гnава 2. Оптимизация, вnияющая на поведение компьютера
37
Гnава 3. Измерение производитеnьности
49
Гnава 4. Оптимизация испоnьзования строк
91
Гnава S. Оптимизация аnrоритмов
113
Гnава 6. Оптимизация переменных в динамической памяти
131
Гnава 7. Оптимизация инструкций
173
Гnава 8. Испоnьзование лучших библиотек
213
Гnава 9. Оптимизация сортировки и поиска
229
Гnава 1 О. Оптимизация структур данных
259
Глава 11. Оптимизация ввода-вывода
293
Глава 12. Оптимизация параллельности
307
Гnава 13. Оптимизация управления памятью
353
Предметный указатель
387
Содержание
Предис11овие
Извинения за код
Использование примеров кода
Соглашения, использованные в книге
Об авторе
Об изображении на обложке
Ждем ваших отзывов!
17
19
19
20
20
20
21
Г11ава 1. Обзор оптимизации
23
Оптимизация - часть разработки программного обеспечения
Эффективность оптимизации
Оптимизируйте!
Наносекунда туда, наносекунда сюда
Стратегии оптимизации кода на С++
Используйте компилятор получше; используйте компилятор лучше
Использование лучших алгоритмов
Использование лучших библиотек
Уменьшение количества выделений памяти и копирований
Устранение вычислений
Использование лучших структур данных
Увеличение параллельности
Оптимизация управления памятью
Резюме
24
25
25
28
28
29
30
32
33
33
34
34
35
35
Г11ава 2. Оптимизация, в11ияющая на поведение компьютера
37
Ложь о компьютерах, в которую верит С++
Правда о компьютерах
Медленная память
Недоступность байтов
Одни обращения к памяти медленнее других
Остроконечные и тупоконечные слова
Количество памяти ограничено
Медленное выполнение команд
Трудное принятие решений
Множественные потоки выполнения
Вызовы операционной системы являются дорогостоящими
С++ тоже лжет
Не все инструкции одинаково дорогие
Инструкции выполняются не по порядку
Резюме
38
39
40
41
41
42
43
43
44
45
46
46
47
47
48
Глава 3. Измерение производительности
49
Оптимизирующее мышление
Производительность должна быть измерена
Оптимизация - большая игра
Правило 90/10
Закон Амдала
Проведение экспериментов
Ведение лабораторного журнала
Измерение базовой производительности и постановка целей
Улучшить можно только
Последние комментарии
3 часов 27 минут назад
3 часов 45 минут назад
3 часов 51 минут назад
4 часов 6 минут назад
5 часов 40 минут назад
5 часов 41 минут назад