숫자의 범위를 정의하거나 사용할 때 range() 나 xrange()를 사용하게 된다. 간단한 사용 예를 보면 다음과 같다.


>>> for x in range(5):
...     print x
...
0
1
2
3
4
>>> for x in xrange(5):
...     print x
...
0
1
2
3
4

 간단한 사용법만 보면 range나 xrange나 그 용도는 별반 다른게 없어 보인다. 


하지만 좀 더 깊게 보면 한가지 큰 차이점이 있는데, range의 경우 해당 api가 실행되는 순간 숫자 범위의 list를 바로 생성하는 반면 xrange의 경우 추후 필요시 생성할 수 있도록 generator만 만들어 놓는다는 것이다. 


>>> range(5)
[0, 1, 2, 3, 4]

>>> xrange(5)
xrange(5)


range 의 경우 필요없는 순간에 list를 만듬으로써 overhead가 발생하게 되고, 불필요한 메모리를 낭비하게 되는 반면 xrange의 경우 필요한 순간 필요한 숫자만 생성함으로써 resource 낭비를 줄일 수 있다. 


작은 단위의 범위에서는 별다른 큰 성능의 차이가 없지만 아주 큰 범위의 숫자를 다루어야 할 경우 그 성능 차이는 눈에 띄게 발생한다. 


특별한 경우가 아니라면 xrange를 사용하자



저작자 표시 비영리 변경 금지
신고