From cb3d6fd3ef0851309a4974b54e0838c90a4afd5a Mon Sep 17 00:00:00 2001 From: FacerAin Date: Mon, 25 Mar 2024 00:04:44 +0900 Subject: [PATCH] add python-profile --- contents/python-profile.md | 59 +++++++++++++++++++++++++++++++++ contents/python-profile/1.png | Bin 0 -> 23859 bytes contents/python-profile/th.jpg | Bin 0 -> 24510 bytes 3 files changed, 59 insertions(+) create mode 100644 contents/python-profile.md create mode 100644 contents/python-profile/1.png create mode 100644 contents/python-profile/th.jpg diff --git a/contents/python-profile.md b/contents/python-profile.md new file mode 100644 index 0000000..2d2c2c4 --- /dev/null +++ b/contents/python-profile.md @@ -0,0 +1,59 @@ +--- +isTIL: false +date: "2024-03-24" +title: "Python에서 프로파일링 하는 법" +categories: ["Tip", "Development"] +summary: "Python에서 프로파일링을 수행하는 방법에 대해 알아봅시다." +thumbnail: "./python-profile/th.jpg" +--- + +## 들어가며, +이번 시간에는 **파이썬에서 프로파일링을 수행하는 방법**에 대해서 간단하게 알아봅니다. + +> **"최적화하기 전에 프로파일링을 하라."** - Effective Python 2nd 중 + +SW 개발에 있어 기능 개발만큼이나 최적화와 유지보수는 좋은 SW를 만들기 위해 매우 중요한 요소입니다. 이때 최적화를 할 때 현재 시스템에서 연산 및 메모리 사용량 등을 확인하고 분석할 필요가 있는데, 이 과정을 프로파일링이라고 합니다. + + +## 파이썬에서 프로파일링 수행하기 +파이썬에서는 기본 라이브러리로 `profile`과 `cProfile`을 지원합니다. +두 라이브러리의 자세한 차이점은 [링크](https://www.w3resource.com/python-interview/what-is-the-difference-between-the-cprofile-and-profile-modules-in-python.php)를 참고해보세요! + +아래 코드는 피보나치를 구하는 두 가지 버전과 프로파일링하는 코드 예제입니다. + +```python +from cProfile import Profile +from pstats import Stats + + +def fibonacci_dp(n): + dp = [0, 1] + for i in range(2, n + 1): + dp.append(dp[i - 1] + dp[i - 2]) + return dp[n] + + +def fibonacci_recursion(n): + if n <= 1: + return n + else: + return fibonacci_recursion(n - 1) + fibonacci_recursion(n - 2) + + +def test(): + num = 35 + fibonacci_dp(num) + fibonacci_recursion(num) + + +profiler = Profile() +profiler.runcall(test) + +stats = Stats(profiler) +stats.strip_dirs() +stats.sort_stats("cumulative") +stats.print_stats() +``` + + + diff --git a/contents/python-profile/1.png b/contents/python-profile/1.png new file mode 100644 index 0000000000000000000000000000000000000000..f362ff3d26759d53b873eb2fcc48f3e433fde39e GIT binary patch literal 23859 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≺QI0 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 ly(q)