알고리즘의 성능 측정은 공간/시간복잡도로 이루어지고 시간 측정은 Notation Big O와 아래의 모듈과 같이 측정할 수 있다.
- 많은 양의 입력이 들어오면 차이는 점진적 또는 지수적으로 커지게 된다.
- 문제를 해결하는데 있어서 다양한 방법이 존재하지만, 가능하면 빠른 알고리즘을 사용하는 이유는 속도 때문이다.
- 데코레이터를 활용
- 자주 사용해야할때 불러오기 편하다.
-
# 파이썬에서 시간을 측정하기 위한 함수생성 import time from functools import wraps def check_time(function): @wraps(function) def measure(*args, **kwargs): start_time = time.time() result = function(*args, **kwargs) end_time = time.time() print(f"@check_time: {function.__name__} took {end_time - start_time}") return result return measure # case - 1 @check_time # 데코레이터 생성하여 활용 def sum_n(n): s = 0 for i in range(1, n+1): s += i return s if __name__ == "__main__": sum_n(100000) # case - 2 @check_time # 데코레이터 생성하여 활용 def sum_n2(n): return n*(n+1)//2 if __name__ == "__main__": sum_n2(100000) ''' @check_time: sum_n took 0.009221315383911133 @check_time: sum_n2 took 0.0 '''
- timeit 모듈 활용
- 짧은 코드의 실행시간을 확인해볼 수 있는 모듈이며 CLI로 실행하는 모듈이다.
-
$ python3 -m timeit '[x**2 for x in range(10000)]' 100 loops, best of 5: 2.85 msec per loop $ python3 -m timeit 'list(map(lambda x: x**2, range(10000)))' 100 loops, best of 5: 3.25 msec per loop
- time 명령어 사용
- 제일 자주 쓰는 방법으로, 커맨드 라인에서 단순히 time 명령어를 앞에 붙이는 방식.
- real, user, sys등 세가지의 정보를 얻을 수 있다.
- real : 경과한 총 시간
- user: 커널이 아닌 코드가 소비한 시간
- sys: 커널 함수 때문에 소비한 시간.
-
$ time python n531_prtc.py real 0m0.436s user 0m0.015s sys 0m0.015s
'Computer Science > 파이썬' 카테고리의 다른 글
파이썬의 연산자 메소드 연습 (0) | 2023.01.06 |
---|---|
[Python] pandas .tsv 파일 불러오기 - header 생성 및 추가 (0) | 2021.10.17 |
[Python] CLI로 사용하기 Terminal, git bash, Command line (0) | 2021.07.29 |
[Python] 파이썬에서 Github 사용하기 (ft.잔디농사를하자git commit) (0) | 2021.07.29 |
[Python] Conda 가상환경만들기 (+ 패키지 확인하기 저장하기 설치하기 requirements.txt) (0) | 2021.07.29 |