라벨이 최적화인 게시물 표시

Python 코드최적화 1. Peephole optimization

파이썬은 인터프리터 언어이지만 컴파일을 거친다. 개발자가 실행한 코드는 한 줄 한 줄 런타임에 컴파일 되고 해석된다. 미리 컴파일 되지 않으면 매 번 소스코드 한 줄을 해석할 때마다 같은 연산을 반복해야할 수 있고, 만약 어떤 연산을 하는 코드가 반복적으로 있다면 해당 코드를 실행할 때마다 연산을 다시해야하기 때문에 느려지게 될 것이다. 따라서 파이썬은 컴파일 할 때 특정 조건에 만족하는 항목들은 미리 계산(pre-calculate) 해두고 이를 상수로 갖고 있는다. 조건은 크게 얘기하면 Immutable한 객체의 연산 이라고 할 수 있고 조금 더 디테일 하게 들어가면 아래와 같다. 1) Numeric Calculation (숫자 계산) Ex) 24 * 60, 300 * 12, 30000* 12000 2) 연산결과의 length가 20이 넘지 않는 Immutable 객체의 Sequence 연산 Yes) "Hello" + "World"       "abc" * 5        (1,2) * 5 No) " ab"*11 (이건 22글자가 되기 때문에 탈락)       (1,2) * 11 (마찬가지로 22개가 되기 때문에 탈락) def my_func (): a = 3000000 * 12000 / 27 b = ( 1 , 2 ) * 5 c = "abc" d = "ab" * 11 e = "the quick brown fox" * 5 f = [ "a" , "b" ] * 3 g = [ "a" , "a" , "a" , "a" , "a" , "a" , "a" , "a" , "a...