Профессиональный бенчмарк: искусство измерения производительности - Андрей Акиньшин - E-Book

Профессиональный бенчмарк: искусство измерения производительности E-Book

Андрей Акиньшин

0,0

Beschreibung

Это исчерпывающее руководство поможет вам правильно разрабатывать бенчмарки, измерять ключевые метрики производительности приложений .NET и анализировать результаты. В книге представлены десятки кейсов, проясняющих сложные аспекты бенчмаркинга. Ее изучение позволит вам избежать распространенных ошибок, проконтролировать точность измерений и повысить производительность своих программ.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 726

Veröffentlichungsjahr: 2024

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Переводчики А. Григорьева, А. Григорьева, А. Григорьева, А. Григорьева, А. Григорьева, А. Григорьева, О. Сивченко

Андрей Акиньшин

Профессиональный бенчмарк: искусство измерения производительности. — СПб.: Питер, 2024.

ISBN 978-5-4461-1551-8

© ООО Издательство "Питер", 2024

Оглавление

Об авторе
О научных редакторах
Благодарности
От издательства
Введение
Структура книги
Примеры
Ожидания
1. Введение в бенчмаркинг
Планирование измерения производительности
Цели бенчмаркинга
Требования к бенчмаркам
Пространства производительности
Модель производительности
Анализ
Выводы
2. Подводные камни бенчмаркинга
Общие подводные камни
Подводные камни, специфичные для .NET
Выводы
3. Как окружение влияет на производительность
Среда исполнения
Компиляция
Внешнее окружение
Выводы
Источники
4. Статистика для специалистов по производительности
Описательная статистика
Анализ производительности
Как лгать с помощью бенчмаркинга
Выводы
Источники
5. Анализ и тестирование производительности
Цели тестирования производительности
Виды бенчмарков и тестов производительности
Аномалии производительности
Стратегии защиты
Подпространства производительности
Разработка с ориентацией на производительность
Культура производительности
Выводы
Источники
6. Инструменты для диагностики
BenchmarkDotNet
Инструменты Visual Studio
Инструменты JetBrains
Windows Sysinternals
Другие полезные инструменты
Выводы
Источники
7. Бенчмарки, ограниченные возможностями процессора
Регистры и стек
Инлайнинг
Параллелизм на уровне команд
Прогнозирование ветвления
Арифметика
Интринзики
Выводы
Источники
8. Бенчмарки, ограниченные возможностями памяти
Кэш процессора
Схема размещения памяти
Сборщик мусора
Выводы
Источники
9. Аппаратные и программные таймеры
Терминология
Аппаратные таймеры
API для проставления отметок времени в ОС
API для проставления отметок времени на платформе .NET
Подводные камни при проставлении отметок времени
Выводы
Источники
Рекомендуем прочитать

Об авторе

Андрей Акиньшин — старший разработчик в компании JetBrains. Там он трудится над Rider (кросс-платформенной средой разработки для .NET, основанной на платформе IntelliJ и ReSharper). Является мейнтейнером BenchmarkDotNet (самой популярной библиотеки для написания .NET-бенчмарков).

Андрей — программный директор конференции DotNext. На его счету более ста выступлений на различных мероприятиях для разработчиков, множество статей и постов. Кроме того, Андрей — обладатель звания Microsoft .NET MVP и серебряной медали Международной студенческой олимпиады по программированию ACM ICPC.

Автор имеет степень кандидата физико-математических наук и занимается научными проектами в сфере математической биологии и теории бифуркаций в Институте математики имени С.Л. Соболева Сибирского отделения Российской академии наук. Раньше он работал постдоком (postdoctoral research) в Институте имени Вейцмана.

О научных редакторах

Джон Гарленд — вице-президент по образовательным сервисам в компании Wintellect. Он профессионально разрабатывает программное обеспечение с 1990-х годов. Клиенты, которых он консультирует, — это и небольшие фирмы, и компании из списка Fortune 500. Его работа обсуждалась в основных тезисах и секциях конференций Microsoft. Он выступал на конференциях в Северной и Южной Америке и Европе. Джон живет в городе Камминге (штат Джорджия) с женой и дочерью. Он окончил Университет Флориды, получив степень бакалавра по вычислительной технике, написал книгу Windows Store Apps Succinctly («Краткий обзор приложений для Windows Store») и был соавтором книги Programming the Windows Runtime by Example («Программирование Windows Runtime в примерах»). На данный момент Джон работает над архитектурой облачного сервиса Microsoft Azure, является участником группы Microsoft Azure Insiders, ценным специалистом по Microsoft Azure, сертифицированным преподавателем Microsoft и сертифицированным членом общества разработчиков Microsoft Azure.

Саша Голдштейн — разработчик программного обеспечения в Google Research. Он работает над применением машинного обучения в различных продуктах Google, связанных с диалогами, классификацией текста, системами рекомендаций и т.д. До работы в Google Саша более десяти лет занимался отладкой программного обеспечения и оптимизацией производительности, вел курсы по всему миру и выступал на множестве международных конференций. Написал книгу Pro .NET Performance («Оптимизация приложений на платформе .NET») (Apress, 2012).

Благодарности

Я начал собирать материал для этой книги пять лет назад. На написание потратил около двух с половиной лет. Но, даже проработав над книгой тысячи часов, я все равно не смог бы закончить все главы в одиночку. Эта книга создана с помощью многих талантливых разработчиков.

Прежде всего я хотел бы поблагодарить Ивана Пащенко. Это человек, который вдохновил меня поделиться тем, что я знаю, и комментировал не только эту книгу, но и десятки моих ранних постов в блоге. Он поддерживал меня много лет и помог мне понять множество нюансов, необходимых для написания хорошей технической литературы. Спасибо, Иван!

Во-вторых, хочу поблагодарить всех моих неофициальных рецензентов: Ирину Ананьеву, Михаила Филиппова, Игоря Луканина, Адама Ситника, Карлена Симоняна, Стивена Тауба, Алину Смирнову, Федерико Андреса Луиса, Конрада Кокосу и Вэнса Моррисона. Они потратили немало времени на чтение черновиков и нашли кучу ошибок и опечаток на ранних стадиях написания. И дали много хороших советов, которые помогли мне значительно улучшить книгу.

В-третьих, я хочу поблагодарить команду издательства Apress: Джона Гарленда и Сашу Голдштейна (официальных технических рецензентов), Джоан Мюррей (рецензента издательства), Лору Берендсон (редактора-консультанта по аудитории), Нэнси Чен (редактора-координатора), Гвенан Спиринг (начального рецензента издательства) и остальных членов команды, которые помогли мне издать эту книгу. Прошу прощения за сорванные сроки и говорю вам спасибо за терпение. Благодаря этим людям из моих черновиков и заметок появилась реальная книга. Они помогли структурировать содержимое, представить мои идеи в понятной форме и исправить грамматические ошибки.

Далее я хочу поблагодарить всех разработчиков и пользователей Bench­markDot­Net. Я очень рад, что этот проект не только помогает программистам измерять производительность и анализировать результаты, но и популяризирует правильные подходы к бенчмаркингу, способствует дискуссиям о тонкостях бенчмаркинга и производительности. Я особенно благодарен Адаму Ситнику за огромный вклад в проект: без него эта библиотека не была бы такой замеча­тельной.

Хочу также поблагодарить всех, с кем я обсуждал бенчмаркинг и производительность, кто пишет статьи на эти темы и выступает на конференциях. Я узнал много нового из личных бесед, постов в блогах, дискуссий на GitHub, обсуждений в Twitter и вопросов на StackOverflow (многие ссылки указаны в примечаниях и списке источников в конце книги). В особенности я хотел бы поблагодарить Мэтта Уоррена, Брендана Грегга, Дэниела Лейкенса, Джона Скита, Энди Эйерса, Агнера Фога, Реймонда Чена, Брюса Доусона, Дениса Бахвалова, Алексея Шипилева, Александра Мьютела, Бена Адамса и сотни других разработчиков, которые делятся своими знаниями и помогают создавать проекты с открытым исходным кодом. В книге можно найти много прекрасных практических примеров, существующих благодаря тем участникам сообщества, кому небезразлична производительность.

И наконец, я хочу поблагодарить свою семью и всех друзей и коллег, которые верили в меня, поддерживали и все время спрашивали: «Когда же наконец издадут твою книгу?»

От издательства

Ваши замечания, предложения, вопросы отправляйте по адресу [email protected] (­издательство «Питер», компьютерная редакция).

Мы будем рады узнать ваше мнение!

На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.

2. Подводные камни бенчмаркинга

Если вы изучали результат бенчмарка меньше недели, скорее всего, он неверный.

Брендан Грегг, автор книги Systems Performance: Enterprise and the Cloud (Prentice Hall, 2013)