Национальный цифровой ресурс Руконт - межотраслевая электронная библиотека (ЭБС) на базе технологии Контекстум (всего произведений: 639001)
Контекстум
Электро-2024

Оптимизация приложений на платформе .NET (3000,00 руб.)

0   0
Первый авторГолдштейн
АвторыФлатов И.
ИздательствоМ.: ДМК Пресс
Страниц525
ID795126
АннотацияУвеличение производительности алгоритмов и приложений является чрезвычайно важным аспектом разработки и может дать вам преимущество перед конкурентами, а вашим пользователям обеспечить низкую стоимость владения и удовольствие от использования быстрых и отзывчивых приложений. Данная книга описывает внутренние особенности ОС Windows, среды выполнения CLR и аппаратного обеспечения, влияющие на производительность приложений, а также дает вам знания и инструменты для измерения производительности вашего кода в изоляции от внешних факторов. Книга наполнена примерами кода на C# и рекомендациями, которые помогут вам выжать максимум возможного из вашего приложения — низкое потребление памяти, согласованную нагрузку на процессор и минимальное количество операций ввода/вывода с сетью и диском. Издание предназначено для программистов, знакомых с языком C# и платформой .NET.
ISBN978-5-97060-487-8
УДК004.438.NET
ББК32.973.26-018.2
Голдштейн, С. Оптимизация приложений на платформе .NET / И. Флатов; С. Голдштейн .— Москва : ДМК Пресс, 2017 .— 525 с. — ISBN 978-5-97060-487-8 .— URL: https://rucont.ru/efd/795126 (дата обращения: 16.06.2024)

Предпросмотр (выдержки из произведения)

Оптимизация_приложений_на_платформе_.NET.pdf
Стр.5
Стр.7
Стр.8
Стр.9
Стр.10
Стр.11
Стр.12
Стр.13
Оптимизация_приложений_на_платформе_.NET.pdf
УДК 004.438.NET ББК 32.973.26-018.2 Г79 Г79 Голдштейн С., Зурбалев Д., Флатов И. и др. Оптимизация приложений на платформе .NET. – Пер. с англ. Киселев А. Н. – М.: ДМК Пресс, 2017. – 524 с.: ил. ISBN 978-5-97060-487-8 Увеличение производительности алгоритмов и приложений является чрезвычайно важным аспектом разработки и может дать вам преимущество перед конкурентами, а вашим пользователям обеспечить низкую стоимость владения и удовольствие от использования быстрых и отзывчивых приложений. Данная книга описывает внутренние особенности ОС Windows, среды выполнения CLR и аппаратного обеспечения, влияющие на производительность приложений, а также дает вам знания и инструменты для измерения производительности вашего кода в изоляции от внешних факторов. Книга наполнена примерами кода на C# и рекомендациями, которые помогут вам выжать максимум возможного из вашего приложения – низкое потребление памяти, согласованную нагрузку на процессор и минимальное количество операций ввода/вывода с сетью и диском. Издание предназначено для программистов, знакомых с языком C# и платформой .NET. УДК 004.438.NET ББК 32.973.26-018.2 Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но, поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. ISBN 978-143-024-458-5 (англ.) © by Sasha Goldshtein, Dima Zurbalev, and Ido Flatow ISBN 978-5-97060-487-8 (рус.) © Оформление, перевод на русский язык, ДМК Пресс
Стр.5
ОГЛАВЛЕНИЕ Предисловие .............................................13 Об авторах ................................................ 16 О научных редакторах ................................. 18 Благодарности ...........................................19 Введение .................................................. 20 ГЛАВА 1. Характеристики производительности ............ 23 Требования к производительности .......................................... 24 Характеристики производительности ...................................... 28 В заключение .......................................................................... 31 ГЛАВА 2. Измерение производительности ................... 32 Подходы к измерению производительности ............................ 32 Встроенные инструменты Windows .......................................... 33 Счетчики производительности ................................................. 34 Механизм трассировки событий для Windows .......................... 42 Профилировщики времени ...................................................... 58 Дискретный профилировщик Visual Studio ............................... 59 Инструментированный профилировщик Visual Studio ............... 64 Дополнительные приемы использования профилировщиков времени ................................................................................... 67 Профилировщики выделения памяти ...................................... 71 Профилировщик выделения памяти Visual Studio ..................... 72 CLR Profiler ............................................................................... 75 Профилировщики памяти ......................................................... 81 Другие профилировщики ........................................................ 86 Профилировщики доступа к данным и базам данных ............... 87 Профилировщики конкуренции ................................................ 88
Стр.7
Оглавление 7 Профилировщики ввода/вывода .............................................. 91 Микрохронометраж ................................................................. 92 Пример неправильного микрохронометража ........................... 92 Рекомендации по проведению хронометража .......................... 96 В заключение .......................................................................... 99 ГЛАВА 3. Внутреннее устройство типов ..................... 102 Пример.................................................................................. 102 Семантические отличия между ссылочными типами и типами значений ................................................................. 104 Хранение, размещение и удаление ....................................... 105 Внутреннее устройство ссылочных типов .............................. 108 Таблица методов .................................................................... 109 Вызов методов экземпляров ссылочных типов ....................... 114 Блоки синхронизации и ключевое слово lock .......................... 122 Внутреннее устройство типов значений................................. 128 Ограничения типов значений ................................................. 130 Виртуальные методы типов значений ..................................... 132 Упаковка ................................................................................ 133 Предотвращение упаковки типов значений с помощью метода Equals ........................................................................ 136 Метод GetHashCode ............................................................... 140 Эффективные приемы использования типов значений .......... 144 В заключение ........................................................................ 144 ГЛАВА 4. Сборка мусора ......................................... 145 Назначение сборщика мусора ............................................... 146 Управление свободным списком ............................................ 146 Сборка мусора на основе подсчета ссылок ............................ 148 Сборка мусора на основе трассировки .................................. 150 Фаза маркировки ................................................................... 151 Фазы чистки и сжатия ............................................................ 158 Закрепление .......................................................................... 161 Разновидности сборщиков мусора ........................................ 163 Приостановка потоков для сборки мусора.............................. 163 Сборщик мусора для сервера ................................................ 170 Выбор разновидности сборщика мусора ................................ 172 Поколения ............................................................................. 175 Предположения в основе модели поколений .......................... 176 Реализация поколений в .NET ................................................ 177
Стр.8
8 Оглавление Куча больших объектов .......................................................... 183 Ссылки между поколениями ................................................... 185 Фоновый сборщик мусора...................................................... 188 Сегменты сборщика мусора и виртуальная память ................ 189 Финализация ......................................................................... 194 Детерминированная финализация вручную ........................... 194 Автоматическая недетерминированная финализация ............ 195 Ловушки недетерминированной финализации ....................... 198 Шаблон реализации метода Dispose ...................................... 202 Слабые ссылки ...................................................................... 205 Взаимодействие со сборщиком мусора ................................ 208 Класс System.GC ................................................................... 209 Взаимодействие с применением интерфейсов размещения CLR .................................................................... 213 Триггеры сборщика мусора .................................................... 215 Эффективные приемы повышения производительности сборки мусора ....................................................................... 216 Модель поколений ................................................................. 216 Закрепление .......................................................................... 218 Финализация ......................................................................... 219 Разные советы и рекомендации ............................................. 220 В заключение ........................................................................ 226 ГЛАВА 5. Коллекции и обобщенные типы ................... 230 Обобщенные типы ................................................................. 230 Обобщенные типы в .NET ....................................................... 234 Ограничения обобщенных типов ............................................ 236 Реализация обобщенных типов в CLR ..................................... 239 Коллекции ............................................................................. 249 Параллельные коллекции ....................................................... 252 Проблемы, связанные с кешем .............................................. 254 Собственные коллекции ........................................................ 261 Система непересекающихся множеств .................................. 261 Список с пропусками ............................................................. 263 Одноразовые коллекции ........................................................ 265 В заключение ........................................................................ 269 ГЛАВА 6. Конкуренция и параллелизм ....................... 270 Перспективы и преимущества ............................................... 270
Стр.9
Оглавление 9 Зачем использовать приемы параллельного программирования? .............................................................. 272 От потоков к пулам потоков и задачам ................................... 273 Параллелизм задач ................................................................ 281 Параллелизм данных.............................................................. 290 Асинхронные методы в C# 5 ................................................... 295 Дополнительные шаблоны в TPL ............................................ 300 Синхронизация ...................................................................... 302 Код без блокировок ................................................................ 304 Механизмы синхронизации Windows ..................................... 311 Вопросы оптимального использования кеша ......................... 314 Использование GPU для вычислений ..................................... 318 Введение в C++ AMP .............................................................. 318 Умножение матриц ................................................................. 322 Моделирование движения частиц .......................................... 323 Мозаики и разделяемая память ............................................. 325 В заключение ........................................................................ 331 ГЛАВА 7. Сети, ввод/вывод и сериализация ............... 332 Общие понятия ...................................................................... 333 Синхронный и асинхронный ввод/вывод ................................ 333 Порты завершения ввода/вывода .......................................... 335 Пул потоков в .NET ................................................................ 340 Копирование памяти .............................................................. 341 Чтение вразброс и запись со слиянием ................................. 342 Файловый ввод/вывод ........................................................... 343 Управление кешированием .................................................... 343 Небуферизованный ввод/вывод ............................................. 344 Сети ...................................................................................... 345 Сетевые протоколы ................................................................ 346 Сетевые сокеты ..................................................................... 348 Сериализация и десериализация данных .............................. 351 Тестирование производительности средств сериализации .... 352 Сериализация объектов DataSet ............................................ 354 Windows Communication Foundation ....................................... 356 Пороговые значения .............................................................. 356 Модель обработки ................................................................. 357 Кеширование ......................................................................... 359 Асинхронные клиенты и серверы WCF ................................... 359 Привязки ................................................................................ 361 В заключение ........................................................................ 362
Стр.10
10 Оглавление ГЛАВА 8. Небезопасный код и взаимодействие с ним ... 364 Небезопасный код ................................................................. 365 Закрепление объектов в памяти и дескрипторы сборщика мусора ................................................................................... 366 Управление жизненным циклом ............................................. 368 Выделение неуправляемой памяти ........................................ 368 Использование пулов памяти ................................................. 368 P/Invoke ................................................................................. 370 PInvoke.net и P/Invoke Interop Assistant ................................... 372 Привязка ................................................................................ 374 Заглушки маршалера ............................................................. 375 Двоично совместимые типы ................................................... 380 Направление маршалинга, ссылочные типы и типы значений ................................................................................ 382 Code Access Security .............................................................. 383 Взаимодействие с COM-объектами ....................................... 384 Управление жизненным циклом ............................................. 386 Маршалинг через границы подразделений ............................ 386 Импортирование библиотек типов и Code Access Security ...... 389 NoPIA ..................................................................................... 390 Исключения ........................................................................... 391 Расширения языка C++/CLI ................................................... 392 Вспомогательная библиотека marshal_as ............................... 395 Код на языке IL и неуправляемый код ..................................... 397 Взаимодействие со средой выполнения WinRT в Windows 8 ... 397 Эффективные приемы взаимодействий ................................ 398 В заключение ........................................................................ 399 ГЛАВА 9. Оптимизация алгоритмов .......................... 400 Систематизация сложности ................................................... 401 Большое О ............................................................................. 401 Машины Тьюринга и классы сложности .................................. 403 Мемоизация и динамическое программирование ................. 409 Расстояние Левенштейна ....................................................... 411 Кратчайший путь между всеми парами вершин ...................... 413 Аппроксимация ..................................................................... 416 Задача коммивояжера ........................................................... 417 Задача о максимальном разрезе ............................................ 418 Вероятностные алгоритмы .................................................... 419 Вероятностное решение задачи о максимальном разрезе ..... 419
Стр.11
Оглавление 11 Тест простоты Ферма ............................................................. 420 Индексирование и сжатие ..................................................... 421 Кодировка переменной длины ............................................... 421 Сжатие индексов .................................................................... 423 В заключение ........................................................................ 425 ГЛАВА 10. Шаблоны оптимизации производительности ...426 Оптимизации JIT-компилятора .............................................. 426 Стандартные оптимизации ..................................................... 427 Встраивание методов ............................................................ 428 Отключение проверки границ ................................................. 430 Хвостовые вызовы ................................................................. 432 Производительность на этапе запуска ................................... 436 Предварительная JIT-компиляция с помощью NGen (Native Image Generator) ................................................ 438 Фоновая JIT-компиляция в многопроцессорных системах ..... 441 Упаковщики образов .............................................................. 442 Управляемая оптимизация на основе профилирования ......... 443 Различные советы по оптимизации времени запуска ............. 445 Аппаратно-зависимые оптимизации ..................................... 447 Единственный поток команд и множество потоков данных ..... 448 Распараллеливание инструкций ............................................. 452 Исключения ........................................................................... 457 Механизм рефлексии ............................................................ 458 Генерация кода ...................................................................... 459 Генерация из исходного кода ................................................. 460 Генерация кода с использованием легковесного генератора кода ..................................................................... 462 В заключение ........................................................................ 467 ГЛАВА 11. Производительность веб-приложений ......... 468 Измерение производительности веб-приложений ................ 469 Тестирование производительности и нагрузочное тестирование веб-приложений в среде Visual Studio .............. 469 Инструменты мониторинга HTTP ............................................ 471 Инструменты анализа веб-взаимодействий ........................... 473 Увеличение производительности веб-сервера ...................... 473 Кеширование часто используемых объектов .......................... 474 Использование асинхронных страниц, модулей и контроллеров ...................................................................... 476
Стр.12
12 Оглавление Настройка окружения ASP.NET ............................................... 481 Отключение механизмов трассировки и отладки в ASP.NET .... 481 Отключение механизма ViewState .......................................... 483 Кеш вывода на стороне сервера............................................. 485 Предварительная компиляция приложений ASP.NET .............. 488 Тонкая настройка модели процесса в ASP.NET ....................... 488 Настройка IIS ......................................................................... 491 Кеширование вывода ............................................................. 491 Настройка пула приложения................................................... 493 Оптимизация сети ................................................................. 496 Включение HTTP-заголовков кеширования ............................ 496 Включение сжатия в IIS .......................................................... 501 Минификация и объединение ................................................ 504 Использование сетей доставки содержимого (CDN) .............. 507 Масштабирование приложений ASP.NET ............................... 509 Горизонтальное масштабирование ........................................ 510 Механизмы масштабирования в ASP.NET ............................... 511 Ловушки горизонтального масштабирования ......................... 512 В заключение ........................................................................ 513 Предметный указатель .............................. 514
Стр.13

Облако ключевых слов *


* - вычисляется автоматически
Периодика по подписке
Антиплагиат система Руконтекст