저는 최근에 파이썬을 배우고 있으며 언어로 많은 연습을하고 있습니다.파이썬에서 왜 배열에서 읽는 것이 목록에서 읽는 것보다 느린 것일까 요?
내가 흥미로운 점 중 하나는 배열에서 읽을 때 목록보다 느린 시간이 거의 절반이라는 것입니다. 왜 누군가는 그 이유를 알고 있습니까?
from timeit import Timer import array t = 10000 l = range(t) a = array.array('i', l) def LIST(): for i in xrange(t): l[i] def ARRAY(): for i in xrange(t): a[i] print Timer(LIST).timeit(1000); print Timer(ARRAY).timeit(1000);
출력은 다음과 같습니다 :
여기 내 코드의
배열을 읽는 것은 목록보다 느린 것을 나타냅니다0.813191890717 1.16269612312
. 배열은 고정 크기 메모리이고 목록은 동적 구조라고 생각합니다. 그래서 배열이 목록보다 빠를 것이라고 생각했습니다.
아무도 설명이 있습니까?
dupe/answer : http://stackoverflow.com/questions/176011/python-list-vs-array-when-to-use - 기본적으로 array.array는 C 배열을 둘러싼 래퍼이므로 생각합니다. 액세스 할 때 오버 헤드가 발생합니다. 수학에 사용하지 마십시오. –
파이썬 효율성을 두 번째 추측하려는 시도 - 특히 C와 유사한 배경에서 오는 경우 -는 대개 직관적이지 않습니다. 먼저 코드를 명확하게 작성한 다음 성능 문제를 측정하는 경우 최적화하십시오. 이것은 C에도 적용되지만, 언어 요소가 사람들이 자주 잊어 버리는 기계에 너무 가깝기 때문에. – msw
수학에서는 numpy (아직 파이썬 3에서는 사용 가능하지 않음)를 사용할 수 있지만 numpy가 표준 라이브러리가 아닌 이유는 신만 알고 있습니다. –