Python 시간복잡도, 코드시간측정

728x90
반응형

# 파이썬으로 여러문제를 풀다보면 시간초과가 나는 일이 많이 발생한다.
    (파이썬은 편리함과 효율성을 맞바꾼 언어라고 누가 그러더라..)

그래서 백준에서는 파이썬으로 채점할 때 (제한시간*3+2)초 이런식으로 시간을 늘려주기는 한다.

그렇지만 항상 코드를 짜면서 내장함수를 사용할때마다 '이 함수는 O(n)인가? O(1)인가?'

이런 고민들을 하게 된다. 

 

1. https://wiki.python.org/moin/TimeComplexity

 

TimeComplexity - Python Wiki

This page documents the time-complexity (aka "Big O" or "Big Oh") of various operations in current CPython. Other Python implementations (or older or still-under development versions of CPython) may have slightly different performance characteristics. Howe

wiki.python.org

2. https://www.ics.uci.edu/~pattis/ICS-33/lectures/complexitypython.txt

 

파이썬 메소드들에 관한 시간복잡도가 정리되어있는 사이트이다.

 


# 그런데 여기에 없는 것들도 많아서 검색을 해보았는데 잘 나오지 않아서

      직접 코드수행시간을 확인하는 방법을 검색했다.

 

이런식으로 10번째줄과 14번째 줄 사이에 수행시간이 궁금한 코드를 입력하고 실행하면

이런식으로 시간이 출력된다.

 

3. https://github.com/python/cpython/tree/master/Lib

 

python/cpython

The Python programming language. Contribute to python/cpython development by creating an account on GitHub.

github.com

 

이 github에 들어가면 (경로찾기가 힘들지만) 모든 메소드들의 구성원리를 볼 수 있다.

예를 들면 위에 python wiki에 나오지않는 deque.reverse()같은 경우 O(n/2) = O(n)인것을 확인 할 수있다.

728x90
반응형

'잡다한 상식들' 카테고리의 다른 글

프로그래머스 Weekly Challnege  (0) 2021.08.03
피보나치 수열의 시간복잡도는 왜 θ(1.618의 N제곱)일까  (0) 2021.05.18
알고리즘?  (0) 2019.12.24
연봉방  (0) 2019.12.24
나만의 메모장1  (0) 2019.12.24
TAGS.

Comments