update topic about Profiling

This commit is contained in:
cheatsnake 2023-03-06 20:31:54 +03:00
parent 94312d07d0
commit 1d6f4ab0c5
2 changed files with 26 additions and 9 deletions

View File

@ -2466,19 +2466,27 @@
- ### Профилирование
[Профилирование](https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D1%84%D0%B8%D0%BB%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_(%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0)) кода это попытка найти узкие места в вашем коде. Профилирование позволяет проанализировать ваш код и найти его самые долго выполняющиеся участки. Инструмент, используемый для анализа работы, называют профилировщиком или профайлером.
[Профилирование](https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D1%84%D0%B8%D0%BB%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_(%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0)) это анализ производительности программы, который позволяет обнаружить узкие места в которых происходит наибольшая нагрузка на процессор и/или память.
- Для чего это нужно?
> Информация полученая после профилирования может оказаться очень полезной для оптимизации производительности. Также, профилирование может быть полезно при отладке программы для поиска багов и ошибок.
- Когда этим нужно заниматься?
> По мере потребности когда есть явные проблемы или подозрения.
- Какие конкретные инструменты для этого есть?
> Для Python используется: [cProfile](https://docs.python.org/3/library/profile.html), [line_profiler](https://github.com/pyutils/line_profiler).
> Для Node.js: [встроенный Profiler](https://nodejs.org/en/docs/guides/simple-profiling/), [Clinic.js](https://github.com/clinicjs/node-clinic), [модуль Trace events](https://nodejs.org/api/tracing.html).
> Для Go: [пакет runtime/pprof](https://go.dev/blog/pprof), [утилита trace](https://go.dev/doc/diagnostics#tracing).
<details>
<summary>🔗 <b>Ссылки на материалы</b></summary>
1. 📄 [**Профилирование кода к Python**](https://python-scripts.com/cprofile-code-profiling)
1. 📄 [**Профилировщики Python**](https://digitology.tech/docs/python_3/library/profile.html)
1. 📺 [**Утечки памяти в Node.js и JavaScript, сборка мусора и профилирование** YouTube](https://youtu.be/0oZa64SB2wM)
1. 📺 [**Профилирование JS: увидеть самое важное и не утонуть в море чисел** YouTube](https://youtu.be/rKtWxCYBFP4)
1. 📄 [**Простое профилирование Node.js приложений**](https://nodejs.org/ru/docs/guides/simple-profiling/)
1. 📄 [**Профилирование и оптимизация программ на Go**](https://habr.com/ru/company/badoo/blog/301990/)
1. 📄 [**Профилирование в Go**](https://golangforall.com/ru/post/profiling.html)
1. 📄 [**Kotlin performance on Android**](https://habr.com/ru/company/oleg-bunin/blog/420143/)
2. 📄 [**Профилировщики Python**](https://digitology.tech/docs/python_3/library/profile.html)
3. 📺 [**Утечки памяти в Node.js и JavaScript, сборка мусора и профилирование** YouTube](https://youtu.be/0oZa64SB2wM)
4. 📺 [**Профилирование JS: увидеть самое важное и не утонуть в море чисел** YouTube](https://youtu.be/rKtWxCYBFP4)
5. 📄 [**Простое профилирование Node.js приложений**](https://nodejs.org/ru/docs/guides/simple-profiling/)
6. 📄 [**Профилирование и оптимизация программ на Go**](https://habr.com/ru/company/badoo/blog/301990/)
7. 📄 [**Профилирование в Go**](https://golangforall.com/ru/post/profiling.html)
8. 📄 [**Kotlin performance on Android**](https://habr.com/ru/company/oleg-bunin/blog/420143/)
</details>
<div align="right"><a href="#top">Содержание ⬆️</a></div>

View File

@ -2332,7 +2332,16 @@ Testing is the process of assessing that all parts of the program behave as expe
- ### Profiling
[Profiling](<https://en.wikipedia.org/wiki/Profiling_(computer_programming)>) is an attempt to find bottlenecks in your code. Profiling allows you to analyze your code and find its longest running sections. The tool used to analyze performance is called a profiler.
[Profiling](<https://en.wikipedia.org/wiki/Profiling_(computer_programming)>) is a program performance analysis, which reveals bottlenecks where the highest CPU and/or memory load occurs.
- What is it for?
> The information obtained after profiling can be very useful for performance optimization. Profiling can also be useful for debugging the program to find bugs and errors.
- When should this be done?
> As needed - when there are obvious problems or suspicions.
- What specific tools are there for this?
> For Python, use: [cProfile](https://docs.python.org/3/library/profile.html), [line_profiler](https://github.com/pyutils/line_profiler).
> For Node.js: [built-in Profiler](https://nodejs.org/en/docs/guides/simple-profiling/), [Clinic.js](https://github.com/clinicjs/node-clinic), [Trace events module](https://nodejs.org/api/tracing.html).
> For Go: [runtime/pprof](https://go.dev/blog/pprof), [trace utility](https://go.dev/doc/diagnostics#tracing).
<details>
<summary>🔗 <b>References</b></summary>