2009-06-03 5 views
3

성능면에서 이러한 두 가지 차이점이 얼마나 있습니까?파이썬에서 목록이나 사전이 더 빠릅니까?

tmp = [] 
tmp.append(True) 
print tmp[0] 

그리고

tmp = {} 
tmp[0] = True 
print tmp[0] 
+4

이 비교에는별로 중요하지 않습니다 ... 어쩌면 실제 문제에 대해 자세히 설명 할 수 있습니까? 데이터 구조의 용도는 무엇입니까? – besen

답변

23

는 표준 라이브러리의 timeit 모듈은 바로 그런 질문에 대답하도록 설계되었습니다! 잊어 버려 print (터미널에 물건을 분출의 불쾌한 부작용이 ;-)과 비교 것이다 :

$ python -mtimeit 'tmp=[]; tmp.append(True); x=tmp[0]' 
1000000 loops, best of 3: 0.716 usec per loop 
$ python -mtimeit 'tmp={}; tmp[0]=True; x=tmp[0]' 
1000000 loops, best of 3: 0.515 usec per loop 

는 그래서, DICT가 승자입니다 - 0.2 마이크로 초 ...로 -!)

+0

니스. 나는 그때 아무것도 걱정하지 않고 있었다고 생각한다. 감사. – Scott

+0

니스. Dict는 목록보다 빠릅니다. 감사합니다;) –

-2

그들은 내 테스트에서 평등합니다.

+0

테스트에서 수행 한 작업에 대한 자세한 정보를 제공 할 수 있다면 좋을 것입니다. –

6

일반적으로 마이크로 최적화는 일반적으로 무의미 할뿐만 아니라 특별히 파이썬의 경우 특히 어렵습니다. 코드를 동시에 더 느리고 복잡하게 만드는 것은 매우 쉽습니다. 가장 단순하고, 가장 명확하며, 가장 짧은 Python 솔루션이 가장 빠르다는 예를 보려면 this Stack Overflow question을보십시오.

다른 사람들이 실제 테스트를 통해 보여 주듯이 두 선택의 속도 차이는 아주 작습니다. 덜 의미가 작은 것은 의미 론적 차이입니다. 목록과 사전은 동일한 개념의 단지 두 가지 구현이 아니라 다양한 용도로 사용됩니다. 당신의 사용에 더 잘 맞는 것을 골라라.

+0

음,이 특별한 경우 나는 dict 또는 list를 사용할 수 있습니다. 하나가 다른 것보다 가질 수있는 유일한 이점은 성능, 따라서 질문입니다. 음, 그 딕트도 깨끗하게 보입니다. 어떤 색인이 할당되는지는 분명합니다. 나는 딕트를 선택했지만 잔소리가 심한 질문이있었습니다. – Scott

관련 문제