Курт Гантерот - Оптимизация программ на С++. Проверенные методы для повышения производительности
Название: | Оптимизация программ на С++. Проверенные методы для повышения производительности | |
Автор: | Курт Гантерот | |
Жанр: | C, C++, C# | |
Изадано в серии: | Бестселлеры o’reilly | |
Издательство: | ООО "Альфа-книга" | |
Год издания: | 2017 | |
ISBN: | 978-5-9908910-6-7 | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "Оптимизация программ на С++. Проверенные методы для повышения производительности"
Аннотация к этой книге отсутствует.
Читаем онлайн "Оптимизация программ на С++. Проверенные методы для повышения производительности". [Страница - 2]
- 1
- 2
- 3
- 4
- . . .
- последняя (95) »
выполнения
Вызовы операционной системы являются дорогостоящими
С++ тоже лжет
Не все инструкции одинаково дорогие
Инструкции выполняются не по порядку
Резюме
38
39
40
41
41
42
43
43
44
45
46
46
47
47
48
Глава 3. Измерение производительности
49
Оптимизирующее мышление
Производительность должна быть измерена
Оптимизация - большая игра
Правило 90/10
Закон Амдала
Проведение экспериментов
Ведение лабораторного журнала
Измерение базовой производительности и постановка целей
Улучшить можно только измеряемое
Профилирование выполнения программы
Длительно работающий код
"Полузнайство" об измерении времени
Измерение времени с помощью компьютеров
Преодоление проблем измерений
Создание класса-секундомера
Хронометраж функции в тесте
Оценка стоимости кода для поиска узких мест
Оценка стоимости отдельных инструкций С++
Оценка стоимости циклов
Другие пути поиска узких мест
Резюме
50
50
51
51
53
54
56
57
60
60
63
64
69
77
81
85
86
87
88
89
90
91
Гnава 4. Оптимизация испоnьзования строк
Почему строки представляют собой проблему
Строки используют динамическое выделение памяти
Строки как значения
Строки выполняют массу копирований
Первая попытка оптимизации строк
Использование модифицирующих операций для устранения
временных значений
Уменьшение работы с памятью с помощью резервирования
Устранение копирования строкового аргумента
Устранение разыменований с помощью итераторов
Устранение копирования возвращаемого значения
Использование массивов символов вместо строк
Итоги первой попытки оптимизации
Вторая попытка оптимизации строк
Использование лучшего алгоритма
Использование лучшего компилятора
Использование лучшей библиотеки для работы со строками
Использование лучшего менеджера памяти
91
92
92
93
94
96
96
97
98
99
100
102
102
102
104
105
109
Содержа н и е
7
Устранение преобразования строк
Преобразование строк в стиле С в std : : string
Преобразование между кодировками
Резюме
Гnава 5. Оптимизация аnrоритмов
110
111
111
112
113
Временная стоимость алгоритмов
Временная стоимость в наилучшем, среднем и наихудшем случаях
Амортизированная временная стоимость
Прочие стоимости
Оптимизации сортировки и поиска
Эффективные алгоритмы поиска
Временная стоимость алгоритмов поиска
Все поиски равноценны при малых п
Эффективные алгоритмы сортировки
Временная стоимость алгоритмов сортировки
Замена сортировки с плохой производительностью в наихудшем случае
Использование информации о входных данных
Шаблоны оптимизации
Предвычисления
Отложенные вычисления
Пакетирование
Кеширование
Специализация
Гр уппировка
Подсказки
Оптимизация ожидаемого пути
Хеширование
Двойная проверка
Резюме
128
1 28
1 28
129
1 29
Гnава 6. Оптимизация переменных в динамической памяти
131
Переменные С++
Длительность хранения переменной
Владение переменными
Объекты-значения и объекты-сущности
API динамических переменных С++
Автоматизация владения интеллектуальными указателями
Динамические переменные имеют стоимость времени выполнения
Уменьшение использования динамических переменных
Статическое создание экземпляров класса
Использование статических структур данных
Использование std : : make shared вместо new
1 32
1 32
135
1 36
1 38
1 40
8
Содержа ни е
1 15
117
1 18
118
118
1 19
1 19
120
121
121
122
1 23
1 23
1 24
125
1 26
1 26
1 27
127
143
1 44
145
1 46
150
Не следует разделять владение без необходимости
Использование "главного указателя" для владения динамическими переменными
Уменьшение количества перераспределений динамических переменных
Предварительное выделение памяти для динамических переменных
для предотвращения перераспределений
Создание динамических переменных вне циклов
Устранение излишнего копирования
Устранение нежелательного копирования в определении класса
Устранение копирования при вызове функции
Устранение копирования при возврате из функции
Библиотеки без копирования
Реализация идиомы "копирования при записи"
Срезы
Реализация семантики перемещения
Нест а ндар т ная семантика копирования: --">
Вызовы операционной системы являются дорогостоящими
С++ тоже лжет
Не все инструкции одинаково дорогие
Инструкции выполняются не по порядку
Резюме
38
39
40
41
41
42
43
43
44
45
46
46
47
47
48
Глава 3. Измерение производительности
49
Оптимизирующее мышление
Производительность должна быть измерена
Оптимизация - большая игра
Правило 90/10
Закон Амдала
Проведение экспериментов
Ведение лабораторного журнала
Измерение базовой производительности и постановка целей
Улучшить можно только измеряемое
Профилирование выполнения программы
Длительно работающий код
"Полузнайство" об измерении времени
Измерение времени с помощью компьютеров
Преодоление проблем измерений
Создание класса-секундомера
Хронометраж функции в тесте
Оценка стоимости кода для поиска узких мест
Оценка стоимости отдельных инструкций С++
Оценка стоимости циклов
Другие пути поиска узких мест
Резюме
50
50
51
51
53
54
56
57
60
60
63
64
69
77
81
85
86
87
88
89
90
91
Гnава 4. Оптимизация испоnьзования строк
Почему строки представляют собой проблему
Строки используют динамическое выделение памяти
Строки как значения
Строки выполняют массу копирований
Первая попытка оптимизации строк
Использование модифицирующих операций для устранения
временных значений
Уменьшение работы с памятью с помощью резервирования
Устранение копирования строкового аргумента
Устранение разыменований с помощью итераторов
Устранение копирования возвращаемого значения
Использование массивов символов вместо строк
Итоги первой попытки оптимизации
Вторая попытка оптимизации строк
Использование лучшего алгоритма
Использование лучшего компилятора
Использование лучшей библиотеки для работы со строками
Использование лучшего менеджера памяти
91
92
92
93
94
96
96
97
98
99
100
102
102
102
104
105
109
Содержа н и е
7
Устранение преобразования строк
Преобразование строк в стиле С в std : : string
Преобразование между кодировками
Резюме
Гnава 5. Оптимизация аnrоритмов
110
111
111
112
113
Временная стоимость алгоритмов
Временная стоимость в наилучшем, среднем и наихудшем случаях
Амортизированная временная стоимость
Прочие стоимости
Оптимизации сортировки и поиска
Эффективные алгоритмы поиска
Временная стоимость алгоритмов поиска
Все поиски равноценны при малых п
Эффективные алгоритмы сортировки
Временная стоимость алгоритмов сортировки
Замена сортировки с плохой производительностью в наихудшем случае
Использование информации о входных данных
Шаблоны оптимизации
Предвычисления
Отложенные вычисления
Пакетирование
Кеширование
Специализация
Гр уппировка
Подсказки
Оптимизация ожидаемого пути
Хеширование
Двойная проверка
Резюме
128
1 28
1 28
129
1 29
Гnава 6. Оптимизация переменных в динамической памяти
131
Переменные С++
Длительность хранения переменной
Владение переменными
Объекты-значения и объекты-сущности
API динамических переменных С++
Автоматизация владения интеллектуальными указателями
Динамические переменные имеют стоимость времени выполнения
Уменьшение использования динамических переменных
Статическое создание экземпляров класса
Использование статических структур данных
Использование std : : make shared вместо new
1 32
1 32
135
1 36
1 38
1 40
8
Содержа ни е
1 15
117
1 18
118
118
1 19
1 19
120
121
121
122
1 23
1 23
1 24
125
1 26
1 26
1 27
127
143
1 44
145
1 46
150
Не следует разделять владение без необходимости
Использование "главного указателя" для владения динамическими переменными
Уменьшение количества перераспределений динамических переменных
Предварительное выделение памяти для динамических переменных
для предотвращения перераспределений
Создание динамических переменных вне циклов
Устранение излишнего копирования
Устранение нежелательного копирования в определении класса
Устранение копирования при вызове функции
Устранение копирования при возврате из функции
Библиотеки без копирования
Реализация идиомы "копирования при записи"
Срезы
Реализация семантики перемещения
Нест а ндар т ная семантика копирования: --">
- 1
- 2
- 3
- 4
- . . .
- последняя (95) »
Книги схожие с «Оптимизация программ на С++. Проверенные методы для повышения производительности» по жанру, серии, автору или названию:
Александр Вячеславович Фролов, Григорий Вячеславович Фролов - Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT Жанр: C, C++, C# Год издания: 1996 |
Александр Вячеславович Фролов, Григорий Вячеславович Фролов - Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT. Часть 2 Жанр: C, C++, C# Год издания: 1996 Серия: Библиотека системного программиста |
Дэвид Конгер - Физика для разработчика компьютерных игр Жанр: Программирование игр Год издания: 2007 Серия: Программисту |
Фил Уиндер - Обучение с подкреплением для реальных задач Жанр: Искусственный интеллект Год издания: 2023 Серия: Бестселлеры o’reilly |
Другие книги из серии «Бестселлеры o’reilly»:
Джейми Леви - UX-стратегия. Чего хотят пользователи и как им это дать Жанр: Интернет Год издания: 2017 Серия: Бестселлеры o’reilly |
Евгений Брикман - Terraform: инфраструктура на уровне кода Жанр: Программирование: прочее Год издания: 2020 Серия: Бестселлеры o’reilly |
Саймон Монк - Электроника. Сборник рецептов: готовые решения на базе Arduino и Raspberry Pi Жанр: Аппаратное обеспечение, компьютерное железо Год издания: 2019 Серия: Бестселлеры o’reilly |
Мэтт Стаффер - Laravel. Полное руководство Жанр: PHP Год издания: 2020 Серия: Бестселлеры o’reilly |