책을 읽다가 자칫 실수할 수 있는 내용이 있길래 스크랩을 해둡니다.
문자열 붙이기에 사용되는 다음 두 개의 코드를 비교해 보자. 첫 번째 방법은 문자열에 문자열을 연결하는 방법이다. (10만번)
s = ''
for k in range(100000) :
s += 'spam'
두 번째 방법은 연결될 문자열을 일단 리스트에 저장한 후 나중에 한꺼번에 연결하는 방법이다.
t = []
for k in range(100000) :
t.append('spam')
s = ''.join(t)
두 개의 코드를 저자의 컴퓨터에서 실제로 비교해 본 결과 첫 번째 방법이 380.873초 걸린 반면에 두 번째 방법은 불과 0.843초 밖에는 걸리지 않았다. 그 이유는 첫 번째 방법은 문자열을 실제로 10만번 붙이기 위하여 메모리 할당을 10만번 하고 10만번 해제한다. 또한 그 크기도 점차 늘어서 나중에는 400K 가까운 메모리를 할당하고 해제를 반복한다. 반면에 두 번째 방법은 필요한 만큼의 문자열을 메모리에 해제함 없이 저장한 후 나중에 한번만 붙이므로 연산 속도가 상당히 빠르다. 가장 빠른 연산은 s = 'spam' * 10000 으로 불과 0.01초밖에는 걸리지 않았다. 하지만 다른 문자열을 붙이는 경우라면 두 번째 방법이 효과적이라고 생각한다.
출저 : 열혈강의 파이썬(이강성 저) 165p
Posted by gmong


