Информация о книге

978-5-94074-944-8, 978-5-97060-487-8

Главная  » Тематика определяется » Оптимизация приложений на платформе .Net

Голдштейн С., Зурбалев Д., Флатов И., Оптимизация приложений на платформе .Net

ДМК-Пресс, 2017 г., 978-5-94074-944-8, 978-5-97060-487-8


Наличие в интернет-магазинах

Магазинов: 3, Цена: от 3039 руб. посмотреть все

Описание книги

Увеличение производительности алгоритмов и приложений является чрезвычайно важным аспектом разработки и может дать вам преимущество перед конкурентами, а вашим пользователям обеспечить низкую стоимость владения и удовольствие от использования быстрых и отзывчивых приложений. Данная книга описывает внутренние особенности ОС Windows, среды выполнения CLR и аппаратного обеспечения, влияющие на производительность приложений, а также дает вам знания и инструменты для измерения производительности вашего кода в изоляции от внешних факторов. Книга наполнена примерами кода на C# и рекомендациями, которые помогут вам выжать максимум возможного из вашего приложения - низкое потребление памяти, согласованную нагрузку на процессор и минимальное количество операций ввода/вывода с сетью и диском. Издание предназначено для программистов, знакомых с языком C# и платформой .NET.

Купить эту книгу можно в интернет-магазинах

  Буквоед - 3039 руб.   Читай-Город - 3039 руб.
  Страница товара выбранного интернет-магазина откроется в новом табе

Скачать, но не бесплатно эту книгу можно в интернет-магазинах

  Литрес - 599 руб.

Читать онлайн


Доступен для чтения фрагмент книги

Ключевые слова


  CLR 


Поделиться ссылкой на книгу



Содержание книги

Предисловие
Об авторах
О научных редакторах
Благодарности
Введение
ГЛАВА 1.
Характеристики производительности
Требования к производительности
Характеристики производительности
В заключение
ГЛАВА 2.
Измерение производительности
Подходы к измерению производительности
Встроенные инструменты Windows
Счетчики производительности
Механизм трассировки событий для Windows
Профилировщики времени
Дискретный профилировщик Visual Studio
Инструментированный профилировщик Visual
Studio
Дополнительные приемы использования
профилировщиков
времени
Профилировщики выделения памяти
Профилировщик выделения памяти Visual Studio
CLR Profiler
Профилировщики памяти
Другие профилировщики
Профилировщики доступа к данным и базам
данных
Профилировщики конкуренции
Профилировщики ввода/вывода
Микрохронометраж
Пример неправильного микрохронометража
Рекомендации по проведению хронометража
В заключение
ГЛАВА 3.
Внутреннее устройство типов
Пример
Семантические отличия между ссылочными типами
и типами значений
Хранение, размещение и удаление
Внутреннее устройство ссылочных типов
Таблица методов
Вызов методов экземпляров ссылочных типов
Блоки синхронизации и ключевое слово lock
Внутреннее устройство типов значений
Ограничения типов значений
Виртуальные методы типов значений
Упаковка
Предотвращение упаковки типов значений с
помощью
метода Equals
Метод GetHashCode
Эффективные приемы использования типов
значений
В заключение
ГЛАВА 4.
Сборка мусора
Назначение сборщика мусора
Управление свободным списком
Сборка мусора на основе подсчета ссылок
Сборка мусора на основе трассировки
Фаза маркировки
Фазы чистки и сжатия
Закрепление
Разновидности сборщиков мусора
Приостановка потоков для сборки мусора
Сборщик мусора для сервера
Выбор разновидности сборщика мусора
Поколения
Предположения в основе модели поколений
Реализация поколений в .NET
Куча больших объектов
Ссылки между поколениями
Фоновый сборщик мусора
Сегменты сборщика мусора и виртуальная память
Финализация
Детерминированная финализация вручную
Автоматическая недетерминированная
финализация
Ловушки недетерминированной финализации
Шаблон реализации метода Dispose
Слабые ссылки
Взаимодействие со сборщиком мусора
Класс System.GC
Взаимодействие с применением интерфейсов
размещения CLR
Триггеры сборщика мусора
Эффективные приемы повышения
производительности
сборки мусора
Модель поколений
Закрепление
Финализация
Разные советы и рекомендации
В заключение
ГЛАВА 5.
Коллекции и обобщенные типы
Обобщенные типы
Обобщенные типы в .NET
Ограничения обобщенных типов
Реализация обобщенных типов в CLR
Коллекции
Параллельные коллекции
Проблемы, связанные с кешем
Собственные коллекции
Система непересекающихся множеств
Список с пропусками
Одноразовые коллекции
В заключение
ГЛАВА 6.
Конкуренция и параллелизм
Перспективы и преимущества
Зачем использовать приемы параллельного
программирования?
От потоков к пулам потоков и задачам
Параллелизм задач
Параллелизм данных
Асинхронные методы в C# 5
Дополнительные шаблоны в TPL
Синхронизация
Код без блокировок
Механизмы синхронизации Windows
Вопросы оптимального использования кеша
Использование GPU для вычислений
Введение в C++ AMP
Умножение матриц
Моделирование движения частиц
Мозаики и разделяемая память
В заключение
ГЛАВА 7.
Сети, ввод/вывод и сериализация
Общие понятия
Синхронный и асинхронный ввод/вывод
Порты завершения ввода/вывода
Пул потоков в .NET
Копирование памяти
Чтение вразброс и запись со слиянием
Файловый ввод/вывод
Управление кешированием
Небуферизованный ввод/вывод
Сети
Сетевые протоколы
Сетевые сокеты
Сериализация и десериализация данных
Тестирование производительности средств
сериализации
Сериализация объектов DataSet
Windows Communication Foundation
Пороговые значения
Модель обработки
Кеширование
Асинхронные клиенты и серверы WCF
Привязки
В заключение
ГЛАВА 8.
Небезопасный код и взаимодействие с ним
Небезопасный код
Закрепление объектов в памяти и дескрипторы
сборщика
мусора
Управление жизненным циклом
Выделение неуправляемой памяти
Использование пулов памяти
P/Invoke
PInvoke.net и P/Invoke Interop Assistant
Привязка
Заглушки маршалера
Двоично совместимые типы
Направление маршалинга, ссылочные типы и типы
значений
Code Access Security
Взаимодействие с COM-объектами
Управление жизненным циклом
Маршалинг через границы подразделений
Импортирование библиотек типов и Code Access
Security
NoPIA
Исключения
Расширения языка C++/CLI
Вспомогательная библиотека marshal_as
Код на языке IL и неуправляемый код
Взаимодействие со средой выполнения WinRT в
Windows 8
Эффективные приемы взаимодействий
В заключение
ГЛАВА 9.
Оптимизация алгоритмов
Систематизация сложности
Большое О
Машины Тьюринга и классы сложности
Мемоизация и динамическое программирование
Расстояние Левенштейна
Кратчайший путь между всеми парами вершин
Аппроксимация
Задача коммивояжера
Задача о максимальном разрезе
Вероятностные алгоритмы
Вероятностное решение задачи о максимальном
разрезе
Тест простоты Ферма
Индексирование и сжатие
Кодировка переменной длины
Сжатие индексов
В заключение
ГЛАВА 10.
Шаблоны оптимизации производительности
Оптимизации JIT-компилятора
Стандартные оптимизации
Встраивание методов
Отключение проверки границ
Хвостовые вызовы
Производительность на этапе запуска
Предварительная JIT-компиляция с помощью
NGen (Native Image Generator)
Фоновая JIT-компиляция в многопроцессорных
системах
Упаковщики образов
Управляемая оптимизация на основе
профилирования
Различные советы по оптимизации времени
запуска
Аппаратно-зависимые оптимизации
Единственный поток команд и множество потоков
данных
Распараллеливание инструкций
Исключения
Механизм рефлексии
Генерация кода
Генерация из исходного кода
Генерация кода с использованием легковесного
генератора кода
В заключение
ГЛАВА 11.
Производительность веб-приложений
Измерение производительности веб-приложений
Тестирование производительности и нагрузочное
тестирование веб-приложений в среде Visual Studio
Инструменты мониторинга HTTP
Инструменты анализа веб-взаимодействий
Увеличение производительности веб-сервера
Кеширование часто используемых объектов
Использование асинхронных страниц, модулей
и контроллеров
Настройка окружения ASP.NET
Отключение механизмов трассировки и отладки в
ASP.NET
Отключение механизма ViewState
Кеш вывода на стороне сервера
Предварительная компиляция приложений
ASP.NET
Тонкая настройка модели процесса в ASP.NET
Настройка IIS
Кеширование вывода
Настройка пула приложения
Оптимизация сети
Включение HTTP-заголовков кеширования
Включение сжатия в IIS
Минификация и объединение
Использование сетей доставки содержимого (CDN)
Масштабирование приложений ASP.NET
Горизонтальное масштабирование
Механизмы масштабирования в ASP.NET
Ловушки горизонтального масштабирования
В заключение
Предметный указатель


Об авторе


Отзывы

Испортили переводом  [14 March 2016]
Оригинальная книга шикарна, а перевод - местами ужасен. По ходу, тот, кто переводил, не особо шарит.
Например, Саша Гольдштейн сильно удивился, когда узнал, что в русском переводе его книги сказано, что бенчмаркать нужно с выключенными оптимизациями.
Книга стоящая  [21 August 2014]
Книга шикарна. Ко всему перечисленному выше хотел бы добавить, что рассматриваются даже оптимизации на \"железном\" уровне, т.е. эффективная работа с кэшем процессора. Пример с Array vs SortedList доставил кучу удовольствия.

Рекомендую перед ее прочтением полистать Рихтера - будет легче ориентироваться.

Как уже сказали, мягкая обложка дает о себе знать, выручает скотч :)
Множество грязных подробностей .NET в одной книге  [17 August 2014]
Данная книга содержит множество грязных подробностей .NET, о которых несомненно стоит знать любому разработчику.

Лично для меня наибольший интерес представляют первые четыре главы.
В первой и второй главах рассказано о том, как и с помощью каких инструментов можно измерять производительность приложений. Ведь именно с этого должна начинаться любая оптимизация - определить слабые места.
В третьей и чётвёртой главах очень подробно (на мой взгляд, даже подробней чем в Рихтере) описаны внутреннее устройство типов и процесс сборки мусора.
Остальные главы хоть и содержат не мало ценной и интересной информации, но тем не менее формат книги не позволяет подробно раскрыть описанные там темы, каждая из которых вполне достойна отдельной книги.
Отличная книга!  [26 February 2014]
Книга - не для начинающих. Книга начинается с главы Измерение производительности, где описаны разнообразные профилировщики Windows и Студии. В следующей главе - описание внутреннего устройства типов. А глава 4 довольно подробно (80 страниц!) рассказывает о сборке мусора. Далее - о коллекциях (в том числе и о написании собственных), о параллельности, о сетях, вводе-выводе и сериализации. Отдельная глава о небезопасном коде. И (внезапно... :) ) - глава об оптимизации алгоритмов (а не программ). Интересна глава 10: Шаблоны оптимизации производительности, где довольно много написано о повышении производительности JIT-компилятора.
Ну и последняя глава - о производительности ВЕБ-приложений.
Книга предназначена, в первую очередь, профессиональным программистам - дотнетчикам, но программисты с другой специализацией найдут в ней очень много нужного и полезного.
Недостаток - мягкая обложка и клееный корешок. При интенсивном чтении книга довольно быстро начинает рассыпаться.

Последние поступления в рубрике "Тематика определяется"



Ритуальный оракул Магия зеркал, 53 карты + инструкция 

Представляем вам новую профессиональную колоду Любови Никифоровой (Отилы), являющуюся продолжением ранее изданной и уже популярной колоды «Ритуальный Оракул». В ней вы познакомитесь с азами работы с зеркалами, видами магических воздействий и способами их снятия....

Оракул Норн. Нити судьбы, 45 карт+инструкция 

Оракул Норн: нити судьбы - действительно уникальная колода. Предсказывать будущее или узнавать обстоятельства прошлого и настоящего помогают Боги, Богини и герои Древней Скандинавии. Они дают подробное описание грядущих событий, которое напрямую зависит не только от обстоятельств, но и от характера человека, который хочет узнать свое будущее....

Оракул Вселенской любви Ангелов, 72 карты + инструкция 

Оракул Вселенских Ангелов — это уникальная колода карт, созданная для тех, кто ищет направление и поддержку в области любви и добра от духовного мира Ангелов. Колода состоит из 72 карт, на каждой из которых изображен Ангел....

Если Вы задавались вопросами "где найти книгу в интернете?", "где купить книгу?" и "в каком книжном интернет-магазине нужная книга стоит дешевле?", то наш сайт именно для Вас. На сайте книжной поисковой системы Книгопоиск Вы можете узнать наличие книги Голдштейн С., Зурбалев Д., Флатов И., Оптимизация приложений на платформе .Net в интернет-магазинах. Также Вы можете перейти на страницу понравившегося интернет-магазина и купить книгу на сайте магазина. Учтите, что стоимость товара и его наличие в нашей поисковой системе и на сайте интернет-магазина книг может отличаться, в виду задержки обновления информации.