2010-12-11 2 views
1

TSV 파일에 89 바이트/레코드가 저장된 32000 개의 레코드가 있다고 가정 해보십시오.Python 알고리즘 효율성

이것을 파이썬 사전이나 Ruby 해시에 붙여 넣고 각 레코드의 필드 인 9 바이트 키를 사용하여 색인을 만듭니다. 즉, 32000 개의 키 - 값 쌍이있는 사전이 있습니다. 각 키는 9 바이트이고 각 값은 89 바이트입니다. 2.4Ghz MacBook Pro와 같은 최신 컴퓨터에서 레코드를 검색하는 데 걸리는 평균 시간을 대략적으로 추정 할 수 있으며, 쎄타 표기법에서 최악의 경우는 무엇입니까? Ruby에서의 구현이 파이썬보다 느린가요?

+9

어떻습니까? –

+4

테스트를 실행 해 보시지 않겠습니까? 솔직히, 당신이 알아야 할 많은 것들에 달려 있습니다. – caveman

+4

컴퓨터는 32000과 같은 숫자로 웃는다. 32000 키를 해싱하는 것은 2 년전의 랩탑에서 3ms 걸린다. –

답변

4

사전은 일반적으로 일정 시간 내에 키를 검색 할 수 있으므로 질문에 대한 답변은 "매우 빠름"입니다.

키가 많이 충돌하면 속도가 느려지지만 좋은 해시 함수를 사용하면이 문제를 피할 수있는 유일한 방법입니다. 기본 해쉬 함수는 아마 괜찮을 것이다.

Ruby에서의 구현이 파이썬보다 느 립니 까?

루비는 일반적으로 작은 요소로 파이썬보다 성능 벤치 마크가 느립니다. 나는 아마 그것이 여기에서도 사실 일 것이라고 기대할 것이다.

The Computer Language Benchmarks Game - Ruby vs Python

+0

이 시점에서 메모리가 작동하는 것을 어느 시점에서 멈추는 것이 합리적 일까? – mbm

+1

@mbm : 메모리가 가득 차면. –

+0

소년 나는 멍청이가되는 것을 좋아합니다. 고마워요! – mbm