사용자가 사이트 목록을 방문했는지 확인하기 위해 프록시 로그를 거쳐야하는 문제가 발생했습니다. "x in []"x의 {x} 검색 시간
나는 목록에 대한 방문 호스트와 일치하는 모든 프록시 로그를 읽을 수있는 작은 스크립트를 썼습니다 :for proxyfile in proxyfiles:
for line in proxyfile.readlines():
if line[4] in hosts_list:
print line
hosts_file 큰, 우리가 ~ 10000 개 호스트에 대해 얘기하고, 나는 검색이 이상했다 발견 예상보다. 내 질문에, 그래서
list: 5.58524107933
dict: 0.195574045181
:
import random, time
test_list = [x for x in range(10000)]
test_dict = dict(zip(test_list, [True for x in range(10000)]))
def test(test_obj):
s_time = time.time()
for i in range(10000):
random.randint(0,10000) in test_obj
d_time = time.time() - s_time
return d_time
print "list:", test(test_list)
print "dict:",test(test_dict)
결과 것은 다음과 같다 :
나는 작은 시험을 썼다. 이 검색을보다 편리하게 수행 할 수 있습니까? 목록의 사전을 만드는 것은 해킹처럼 보입니다. 내가 포함하고있는 값이 아닌 키를 검색하려고합니다.
코드 스 니펫을 테스트 할 때 직접 코드를 작성하는 대신 [timeit module] (http://docs.python.org/library/timeit.html#examples)을 사용할 수 있습니다. (ipython을 사용하면 더 쉽습니다.) – DSM
타이밍 관찰에 * dict를 포함시켜야합니다. –
세트를 사용할 수 있습니다. –