파이썬 - 성능 측정
성능 측정 소개
안녕하세요, 파이썬 프로그래머를 꿈꾸는 여러분! 오늘은 파이썬의 매력적인 성능 측정 세계에 몸을 던지기 위해 여러분과 함께 합니다. 친절한 지역 컴퓨터 과학 교사로서, 여러분을 이 여정을 안내하는 것을 기대하고 있습니다. 믿어주십시오, 이 수업이 끝날 때까지 여러분은 프로처럼 코드의 성능을 측정할 수 있을 것입니다!
왜 성능을 측정할까요?
쿠키를 굽는 것을 상상해보세요. 어떤 레시피가 더 빨라지는지 알고 싶지 않나요? 그렇다면 프로그래밍에서 성능을 측정하는 것은 그와 마찬가지입니다 - 우리는 어느 코드가 더 빨리 실행되고 더 적은 자원을 사용하는지 알고 싶습니다. 그것은 단순히 자랑의 권리에 끝나는 것이 아닙니다; 효율적인 코드는 실제 세상에서 시간, 에너지, 심지어는 돈을 절약할 수 있습니다!
기본 시간 측정
코드의 성능을 측정하는 가장 간단한 방법으로, 코드가 실행되는 시간을 측정하는 것부터 시작해보겠습니다.
time
모듈 사용
파이썬의 time
모듈은 성능 측정 여정의 첫 번째 정류장입니다. 다음은 간단한 예제입니다:
import time
start_time = time.time()
# 여러분의 코드가 여기에 들어갑니다
for i in range(1000000):
pass
end_time = time.time()
print(f"Execution time: {end_time - start_time} seconds")
이 예제에서는 코드가 실행되기 전과 후에 현재 시간을 얻기 위해 time.time()
를 사용하고 있습니다. 차이는 실행 시간을 제공합니다. 그것은 스탑워치를 사용하는 것과 같습니다!
timeit
모듈
더 정확한 측정을 위해, 특히 작은 코드 조각의 경우 timeit
모듈을 사용합니다. 그것은 여러분의 코드에 대한 고정밀 스탑워치를 제공합니다!
import timeit
def test_function():
return sum(range(100))
execution_time = timeit.timeit(test_function, number=10000)
print(f"Average execution time: {execution_time / 10000} seconds")
이 코드는 test_function
를 10,000번 실행하고 평균 실행 시간을 제공합니다. 같은 기능의 다른 구현을 비교하는 데 매우 유용합니다.
메모리 사용량 측정
이제 메모리 사용량 측정에 대해 이야기해보겠습니다. 그것은 여러분의 코드가 컴퓨터의 뇌에서 얼마만큼의 공간을 차지하고 있는지 확인하는 것과 같습니다!
memory_profiler
모듈 사용
먼저, memory_profiler
를 설치해야 합니다:
pip install memory_profiler
이제 실제로 어떻게 사용하는지 보겠습니다:
from memory_profiler import profile
@profile
def memory_hungry_function():
big_list = [1] * (10 ** 6)
del big_list
if __name__ == '__main__':
memory_hungry_function()
이 스크립트를 다음과 같이 실행하세요:
python -m memory_profiler your_script.py
이를 통해 코드의 메모리 소비를 줄바뀐 형태로 보고서를 볼 수 있습니다. 코드의 메모리 소비에 X선 보는 것과 같습니다!
CPU 프로파일링
이제 CPU 프로파일링에 대해 이야기해보겠습니다. 이는 코드의 어느 부분이 가장 노력을 기울이고 있는지 천천히 관찰하는 것과 같습니다.
cProfile
사용
파이썬의 내장 모듈인 cProfile
는 CPU 프로파일링에 강력한 도구입니다:
import cProfile
def cpu_intensive_function():
return sum(i*i for i in range(10**6))
cProfile.run('cpu_intensive_function()')
이를 통해 함수의 각 부분이 얼마나 많은 시간을 소비하는지에 대한 자세한 보고서를 얻을 수 있습니다. 코드의 성능에 대한 显微鏡을 가지는 것과 같습니다!
시각화 도구
때로는 보여주는 것이 믿을 수 있는 것입니다. 이제 성능 데이터를 시각화하는 도구를 살펴보겠습니다.
py-spy
로 화염 그래프
먼저, py-spy
를 설치해야 합니다:
pip install py-spy
이제 파이썬 프로그램의 화염 그래프를 생성할 수 있습니다:
py-spy record -o profile.svg -- python your_script.py
이를 통해 프로그램이 시간을 얼마나 소비하는지 보여주는 아름다운 화염 그래프를 생성합니다. 코드의 성능에 대한 히트 맵을 가지는 것과 같습니다!
성능 측정의 베스트 프랙티스
마지막으로 베스트 프랙티스에 대해 설명하겠습니다. 이는 성능 측정의 금科입니다:
- 측정, 추측하지 마세요: 항상 최적화 전에 프로파일을 수행하세요.
- 현실적인 시나리오 테스트: 실제 세상 데이터와 사용 패턴으로 측정하세요.
- 측정 반복: 성능은 변동될 수 있으므로 여러 차례 측정하세요.
- 공평한 비교: 다른 구현을 테스트할 때는 사과와 사과를 비교하세요.
- 전체 그림 고려: 때로는 약간 느린 코드가 더 가독성이 좋거나 유지보수가 쉬울 수 있습니다.
성능 측정 도구 요약
다음은 우리가 논의한 도구를 요약한 편리한 표입니다:
도구 | 목적 | 사용 쉬움 | 정확성 |
---|---|---|---|
time 모듈 |
기본 시간 측정 | 쉬워요 | 낮아요 |
timeit 모듈 |
작은 코드 조각의 정확한 시간 측정 | 중간 | 높아요 |
memory_profiler |
메모리 사용량 측정 | 중간 | 높아요 |
cProfile |
CPU 프로파일링 | 중간 | 높아요 |
py-spy |
CPU 프로파일링 시각화 | 중간 | 높아요 |
기억해주세요, 성능 측정은 연습을 통해 개선됩니다. 처음에 복잡해 보이더라도 괴롭지 마세요 - 경험丰富的 프로그래머들도 계속 새로운 기술을 배우고 있습니다!
이 수업이 끝나면, 여러분이 코드의 성능을 측정하고 개선하는 데 흥분하고 있기를 바랍니다. 그는 여러분의 프로그래밍 여정에서 매우 유용한 기술이 될 것입니다. 계속 코딩하고, 계속 측정하고, 무엇보다도 파이썬을 즐기세요!
Credits: Image by storyset