복붙노트

[REDIS] 파이썬 메모리 대 레디 스로부터 검색 벤치마킹 (사용 timeit)

REDIS

파이썬 메모리 대 레디 스로부터 검색 벤치마킹 (사용 timeit)

나는 번호 목록이 있습니다. 이 목록은 두 가지 방법으로 저장하십시오 레디 스리스트 (동일한 서버에서 설정된 레디 스) 중 어느 하나 인 메모리 파이썬 객체로서, 또는.

나는 파이썬의 timeit를 사용하여,이 두 목록을 검색하는 데 걸리는 시간을 비교하고있다. 여기에 내가 파이썬 쉘에서 할 수있는 작업은 다음과 같습니다

import timeit
import redis
POOL = redis.ConnectionPool(host='127.0.0.1',port=6379,db=0)
my_server = redis.Redis(connection_pool=POOL)
print min(timeit.Timer('pylist1 = my_server.lrange("nums:5",0,-1)', setup='from __main__ import my_server').repeat(7,1000))

이것은 나에게 1.92341279984의 시간을 제공합니다.

다음으로, 정말 같은 메모리 파이썬 객체를 시간 :

pylist = my_server.lrange("nums:5",0,-1)
print min(timeit.Timer('pylist2 = pylist',setup='from __main__ import pylist').repeat(7,1000))

이것은 나에게 4.29153442383e-05의 시간을 제공합니다. 즉 ~ 45K의 배 빠른 레디 스에서 동일한 목록을 검색하는 것보다 것 같다.

내 질문은 이것이다 : 내 비교 방식은 맞습니까? 즉, 나는 정확하게 메모리에서 검색 대 레디 스에서 검색을 시뮬레이션 무엇입니까? 이것은 내가 생각하고있는 사용 사례에 대한 엄청난 성능 향상,하지만 난이를 구현하기 전에, 단지 확인 내가 벤치마킹을 꾸며 낼하지 않았다되고 싶어요.

해결법

  1. ==============================

    1.여기에 올려 한 비교에서, 당신은 기본적으로 파이썬이 두 번째 경우의 값에 새 이름을 결합하는 데 걸리는 시간을 측정하고 있습니다. 그래서이 훨씬 더 빨리 다른 프로세스 (레디 스)와 통신보다 저를 놀라게하지 않습니다. 나는 무엇을 저를 놀라게하는 옵션이 메모리에 유지하기 위해 단순히 존재하는 경우 레디 스에서 값을 받고 고려할 것이라고 추측한다.

    여기에 올려 한 비교에서, 당신은 기본적으로 파이썬이 두 번째 경우의 값에 새 이름을 결합하는 데 걸리는 시간을 측정하고 있습니다. 그래서이 훨씬 더 빨리 다른 프로세스 (레디 스)와 통신보다 저를 놀라게하지 않습니다. 나는 무엇을 저를 놀라게하는 옵션이 메모리에 유지하기 위해 단순히 존재하는 경우 레디 스에서 값을 받고 고려할 것이라고 추측한다.

    그래서, 당신은 당신이 처음에 이것에 대한 레디 스를 사용하는 이유에 대해 더 명확하게 할 필요가있다. 항상에서 프로세스 메모리가 필요없는 벤치 마크보다 느리게 될 것입니다. 당신은 "왜 파이썬 목록 및 사전을 사용하지 않는 I AM"물어해야합니까? 여러 유효한 답변이 있습니다 데이터가 메모리에 맞게 너무 큰, 당신은 값이 잠시 후에 사라질 수 있도록 같은 캐시 특정 기능을 필요로하거나, IPC, 또는 지속성을 위해 그것을 사용하려고합니다. 여기에 답을 알고 나면, 그것은 당신이 원하는 벤치마킹을 알려줍니다. 그리고 문제는 더 "나는 혜택을 어떻게받을 수 있습니까 / I가 가장 성능 저하에 대한 위에 열거 한 기능"과 같이 될 것입니다. 레디 스 유일한 해답이 될 수 없습니다. 당신은 아마 지속성을위한 선반을 고려, 또는 수 있습니다 전체에 관계형 데이터베이스 또는 몽고 또는 무엇 이건.

    즉, 당신은 얼마나 자주 자신을 해결하는 이유의 좋은 아이디어가 있으면.

  2. from https://stackoverflow.com/questions/40203443/benchmarking-retrieval-from-redis-vs-memory-in-python-using-timeit by cc-by-sa and MIT license