, 나는 흥미로운 참조 : (연습) 만 STR 키를 다루는 것을 dicts에 대한 빠른 경로가 있음을Dict에서 문자열을 키로 사용하는 것이 항상 더 빠릅니까? 이 <a href="http://wiki.python.org/moin/TimeComplexity" rel="noreferrer">page</a>에
참고; 이는 알고리즘의 복잡성에는 영향을 미치지 않지만 일반적인 프로그램이 얼마나 빨리 완료되는지 등의 상수 요소에 큰 영향을 줄 수 있습니다.
그래서 정확히 무엇을 의미합니까?
문자열을 키로 사용할 때 항상 빠르다는 의미입니까?
예인 경우 그 이유는 무엇입니까?
업데이트 : 최적화에 대한 제안에 대한
감사합니다! 그러나 저는 실제로 최적화를해야하는지 또는 언제해야하는지보다 더 확실한 진실에 관심이 있습니다.
업데이트 2 :
덕분에 좋은 답변을, 여기 @DaveWebb에서 제공하는 link에서 콘텐츠 인용합니다 :
" ...
ma_lookup을 처음에는 lookdict_string 함수 (이름이 으로 변경되고 lookdict_unicode은 3.0으로 변경됨)로 설정됩니다. 사전에있는 키와 검색중인 키가 모두 표준 PyStringObject의 것입니다. 문자열 - 문자열 비교가 결코 예외를 발생시키지 않기 때문에 다양한 오류 검사를 완화하는 것과 같은 몇 가지 최적화를 할 수 있습니다. 또한 부자 오브젝트 비교가 필요하지 않으므로 PyObject_RichCompareBool을 호출하지 말고 항상 _PyString_Eq을 직접 사용하십시오.
... "또한
, 실험 번호를, 나는 결코 INT를 문자열로 변환하는이로
나는이 모든 것이 핵심 객체의 '__hash__'메소드가 얼마나 빨리 발생하는지 추측 할 것이다. 나는 문자열을 해쉬하는 것이 상당히 간단하다고 생각하지만, 사전 조회의 어떤 부분이 해싱에 소비되는지 매우 흥미가있을 것이다. – Wilduck
업데이트해도 아무런 변화가 없습니다. 아니요, 귀하의 키가 처음에는 문자열이 아닌 경우 대부분의 경우 더 빠르지 않을 것입니다. –
@Lattyware 링크 된 페이지는 건설을위한 것뿐만 아니라 각 조회마다 속도가 증가하는 것을 의미합니다. – Wilduck