Оптимизация программ на С++. Проверенные методы для повышения производительности [Курт Гантерот] (pdf) читать постранично

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

Оптимизация
программ на с++

Optimized С++

Kurt Guntheroth

Beijing Boston Farnham Sebastopol Tokyo








o·REILLY''

Оптимизация
программ на С++
ПРОВЕРЕННЫЕ МЕТОДЫ
ДЛЯ ПОВЫШЕНИЯ ПРОИЗВОДИТЕЛЬНОСТИ

Курт Гантерот

Москва Санкт-Петербург· Киев


201 7

ББК 32.973.26-018.2.75

Г19

УДК 681.3.о?
Компьютерное издательство "Диалектика"

Зав. редакцией С.Н.

Тригуб

Перевод с ан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.

Authorized Russian translation of the English edition ofOptimized С++©

2016 Kurt

Guntheroth. (ISBN

978-1-491-92206-4).

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рамм на С++
Проверенные методы для повышения производительности
Литературный редактор
Верстка
Художест ве н ный редактор
Корректор

Л.Н. Красножон
Л.В. Чернокозинская
Е.П.Дынник
Л.А. Гордиенко

Подписано в печать 06.03.2017. Формат 70х100/16.
Гарнитура Times.

Усл. печ. л. 32,25. Уч.-изд. л. 24.41.
Тираж 300 экз. Заказ № 1488.

Отпечатано в АО «Первая Образцовая типография»
Филиал •Чеховский Печатный Двор»

142300, Московская область, г. Чехов, ул. Полиграфистов, д.1

Сайт: www.chpd.ru, E-mail: sales@chpd.ru, тел.

8(499)270-73-59

ООО "Альфа-книга·: 195027, Санкт-Петербург, Магнитогорская ул., д. 30

2 0 17 ,

ISBN 978-5-9908910-6-7 {рус.)

©

ISBN 978-1-491-92206-4 (анrл.)

© 2016, Kurt Guпtheroth

Компьютерное изд-во "Диалектика",

перевод, оформление, макетирование

Оrnавnение
Предисnовие

17

Гnава 1. Обзор оптимизации

23

Г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
Закон Амдала
Проведение экспериментов
Ведение лабораторного журнала
Измерение базовой производительности и постановка целей
Улучшить можно только