Skip to content

Commit

Permalink
update python-profile
Browse files Browse the repository at this point in the history
  • Loading branch information
FacerAin committed Mar 24, 2024
1 parent cb3d6fd commit 5174b35
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions contents/python-profile.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,14 @@ thumbnail: "./python-profile/th.jpg"

> **"최적화하기 전에 프로파일링을 하라."** - Effective Python 2nd 중
SW 개발에 있어 기능 개발만큼이나 최적화와 유지보수는 좋은 SW를 만들기 위해 매우 중요한 요소입니다. 이때 최적화를 할 때 현재 시스템에서 연산 및 메모리 사용량 등을 확인하고 분석할 필요가 있는데, 이 과정을 프로파일링이라고 합니다.
SW 개발에서 기능 개발만큼이나 중요한 것은 최적화와 유지보수입니다. 이때 현재 시스템의 연산 및 메모리 사용량 등을 확인하고 분석할 필요가 있는데, 이 과정을 프로파일링이라고 합니다.


## 파이썬에서 프로파일링 수행하기
파이썬에서는 기본 라이브러리로 `profile``cProfile`을 지원합니다.
두 라이브러리의 자세한 차이점은 [링크](https://www.w3resource.com/python-interview/what-is-the-difference-between-the-cprofile-and-profile-modules-in-python.php)를 참고해보세요!

아래 코드는 피보나치를 구하는 두 가지 버전과 프로파일링하는 코드 예제입니다.
아래 코드는 피보나치를 구하는 두 가지 버전과 cProfile을 이용하여 프로파일링하는 코드 예제입니다.

```python
from cProfile import Profile
Expand Down Expand Up @@ -55,5 +55,11 @@ stats.sort_stats("cumulative")
stats.print_stats()
```

프로파일링한 결과는 아래와 같습니다. 결과를 살펴보면 함수 호출 횟수와 소요 시간들을 확인할 수 있습니다. 이를 통해 간단하게 dp버전과 재귀 버전의 로직의 소요 시간을 비교해볼 수 있습니다.

![2](python-profile/2.png "프로파일링 결과")

## 마치며
지금까지 간단하게 cProfile을 이용하여 파이썬 프로파일링하는 방법을 알아보았습니다. 이를 통해 프로파일링을 수행하고, 최적화를 통해 시스템을 개선할 수 있습니다. 이외에도 메모리를 프로파일링 하기 위한 [tracemalloc](https://docs.python.org/3/library/tracemalloc.html), [memory_profiler](https://pypi.org/project/memory-profiler/) 개별 함수를 라인 별로 프로파일링 할 수 있는 [line_profile](https://github.com/pyutils/line_profiler) 등이 있으니, 한번 살펴보시는 것도 추천드립니다! 감사합니다


Binary file added contents/python-profile/2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 5174b35

Please sign in to comment.