Профилирование — это неотъемлемая часть любых работ по оптимизации кода или производительности программ. Любой опыт, любые знания в сфере оптимизации производительности, которые уже у вас есть, не принесут особой пользы в том случае, если вы не знаете о том, где их применить. В результате оказывается, что поиск узких мест приложений может помочь в деле решения проблем производительности, поможет сделать это быстро и приложив не слишком много усилий.
Рубрика «профилирование»
Профилирование Python-программ и анализ их производительности
2022-03-21 в 12:58, admin, рубрики: python, Блог компании Wunder Fund, высокая производительность, Клиентская оптимизация, оптимизация, профилирование, разработкаКак я сократил время загрузки GTA Online на 70%
2021-03-01 в 13:14, admin, рубрики: GTA Online, GTA V, ITSumma, stack sampling, stackwalker, бенчмарки, Блог компании ITSumma, детектив, Клиентская оптимизация, обратная разработка, Программирование, профилирование, разработка игр, расследование, реверс-инжиниринг, Софт, хэш-таблицаGTA Online. Многопользовательская игра, печально известная медленной загрузкой. Недавно я вернулся, чтобы завершить несколько ограблений — и был потрясён, что она загружается настолько же медленно, как и в день своего выпуска, 7 лет назад.
Пришло время докопаться до сути.
Разведка
Сначала я хотел проверить, вдруг кто-то уже решил проблему. Но нашёл только рассказы о великой сложности игры, из-за чего она так долго загружается, истории о том, что сетевая p2p-архитектура — мусор (хотя это не так), некоторые сложные способы загрузки в сюжетный режим, а потом в одиночную сессию, и ещё пару модов, чтобы скипнуть видео с логотипом R* во время загрузки. Ещё немного почитав форумы, я узнал, что можно сэкономить колоссальные 10-30 секунд, если использовать все эти способы вместе!
Читать полностью »
Оптимизация C++: совмещаем скорость и высокий уровень. Доклад Яндекса
2020-10-15 в 7:16, admin, рубрики: c++, catboost, Блог компании Яндекс, высокая производительность, Компиляторы, профилирование, Процессоры, Серверная оптимизация, управление паматью c++, управление памятью, ускорение кодаЧто влияет на скорость работы программ на C++ и как её добиться при высоком уровне кода? Ведущий разработчик библиотеки CatBoost Евгений Петров ответил на эти вопросы на примерах и иллюстрациях из опыта работы над CatBoost для x86_64.
— Всем привет. Я занимаюсь оптимизацией для CPU библиотеки машинного обучения CatBoost. Основная часть нашей библиотеки написана на C++. Сегодня расскажу, какими простыми способами мы добиваемся скорости.
Когда фильтр Блума не подходит
2020-03-05 в 7:04, admin, рубрики: CloudFlare, ddos, IP-спуфинг, Алгоритмы, вероятностная структура данных, Клиентская оптимизация, парадокс дней рождения, поисковые технологии, Программирование, профилирование, Серверная оптимизация, типы данных, фильтр блума, фильтр кукушки, хэширование
Я ещё с университета знал о фильтре Блума — вероятностной структуре данных, названной в честь Бёртона Блума. Но у меня не было возможности её использовать. В прошлом месяце такая возможность появилась — и эта структура буквально очаровала меня. Впрочем, вскоре я нашёл у неё некоторые недостатки. В этой статье — рассказ о моей краткой любовной связи с фильтром Блума.
Читать полностью »
Особенности профилирования программ на C++
2020-01-14 в 6:44, admin, рубрики: c++, callgrind, google perftools, heapdump, tcmalloc, valgrind, высокая производительность, никто не читает теги, но некоторые по ним ищут, Программирование, профилирование, профилирование памяти, профилирование производительности, Серверная оптимизацияВременами бывает нужно отпрофилировать производительность программы или потребление памяти в программе на C++. К сожалению, зачастую это сделать не так просто как может показаться.
Здесь будут рассмотрены особенности профилирования программ с использованием инструментов valgrind и google perftools. Материал получился не очень структурированным, это скорее попытка собрать базу знаний «для личных целей», чтобы в будущем не приходилось судорожно вспоминать, «а почему не работает то» или «а как сделать это». Скорее всего, здесь будут затронуты далеко не все неочевидные случаи, если вам есть что добавить, пишите пожалуйста в комментарии.
Все примеры будут запускаться в системе linux. Читать полностью »
Простые методы оптимизации программ Go
2019-06-20 в 20:55, admin, рубрики: easyjson, Go, json, pprof, sync.Pool, бенчмарки, маршалинг, Программирование, Проектирование и рефакторинг, профилированиеЯ всегда забочусь о производительности. Точно не знаю, почему. Но меня просто бесят медленные сервисы и программы. Похоже, я не одинок.
В тестах A/B мы попытались замедлять выдачу страниц с шагом 100 миллисекунд и обнаружили, что даже очень небольшие задержки приводят к существенному падению доходов. — Грег Линден, Amazon.com
По опыту, низкая производительность проявляется одним из двух способов:
- Операции, которые хорошо выполняются в небольших масштабах, становятся нежизнеспособными с ростом числа пользователей. Обычно это операции O(N) или O(N²). Когда база пользователей мала, всё работает отлично. Продукт спешат вывести на рынок. По мере роста базы возникает всё больше неожиданных патологических ситуаций — и сервис останавливается.
- Много отдельных источников неоптимальной работы, «смерть от тысячи порезов».
Профилируем загрузку Хабра или как влияют 189 запросов на рендер страницы
2019-06-04 в 8:56, admin, рубрики: alt, developer tools, javascript, usability, возьми густой вишневый сок, Клиентская оптимизация, никто не читает теги, оптимизация, оптимизация сайта, Программирование, профилирование, Разработка веб-сайтов
Некоторое время назад я заинтересовался производительностью веб-сайтов, оптимизациями загрузки и тому подобными вещами. И вот, зайдя очередной раз на Хабр, подумал, что привык воспринимать довольно быструю загрузку ресурса как данность, даже не задумываясь о том, как этого удалось добиться. Поэтому я решил совместить приятное с полезным — посмотреть, как обстоят дела с производительностью Хабра и какие технические решения были сделаны для его оптимизации. Для тех, кому интересно узнать, что было сделано что бы мы получали контент как можно быстрее и как выглядит загрузка Хабра из Аргентины — прошу под кат.
Профилирование: оптимизация
2018-03-19 в 13:32, admin, рубрики: c++, Блог компании Mail.Ru Group, никто не читает теги, оптимизация, отладка, Программирование, профилирование, разработка игр
Это вторая статья из серии статей об оптимизации кода. Из первой мы узнали, как находить и анализировать узкие места в коде, снижающие производительность. Мы предположили, что главная проблема в примере — медленное обращение к памяти. В этой статье рассмотрим, как снизить расходы при работе с памятью, а следовательно, и увеличить скорость программы.
Профилирование: измерение и анализ
2018-03-16 в 12:49, admin, рубрики: c++, Блог компании Mail.Ru Group, никто не читает теги, отладка, Программирование, профилирование, разработка игр, С++
Привет, я Тони Альбрехт (Tony Albrecht), инженер в Riot. Мне нравится профилировать и оптимизировать. В этой статье я расскажу об основах профилирования, а также проанализирую пример С++-кода в ходе его профилирования на Windows-машине. Мы начнём с самого простого и будем постепенно углубляться в потроха центрального процессора. Когда нам встретятся возможности оптимизировать — мы внедрим изменения, а в следующей статье разберём реальные примеры из кодовой базы игры League of Legends. Поехали!
Профилирование кода на C-С++ в *nix-системах
2017-10-18 в 12:04, admin, рубрики: c++, nix-системы, perf, александр алексеев, Блог компании Конференции Олега Бунина (Онтико), высокая производительность, профилирование, профилирование производительности, системное программирование
Александр Алексеев (Postgres Professional)
Отличный обзорный доклад конференции HighLoad++ 2016 о том, как надо проводить профилирование программного кода. О типичных ошибках, происходящих при измерениях. И, конечно, об инструментах:
— gettimeofday
— strace, ltrace, truss
— gprof
— gdb / lldb
— perf
— pmcstat
— SystemTap
— DTrace
— HeapTrack
— BPF / bcc
В начале у меня будет не слишком техническая часть, о том, как не надо делать benchmark’и.
Я наблюдаю, что люди часто делают типичные ошибки, когда делают benchmark’и. И вот первая из них…
Читать полностью »