Stavo giocando con couchdb e il pacchetto python "couchdbkit" consigliato. Ho sentito che era un po 'lento e ho deciso di fare delle misurazioni. Se non ho fatto qualcosa di sbagliato, usare il popolare pacchetto "richieste" è più di 10 volte più veloce rispetto a couchdbkit. Perché?couchdbkit 10 volte più lento delle richieste?
Ecco lo script tempi ho usato:
from time import time as now
from pprint import pprint
class Timer:
def __init__(self):
self.current = now()
def __call__(self, msg):
snap = now()
duration = snap - self.current
self.current = snap
pprint("%.3f duration -- %s" %(duration, msg))
def requests(num):
t = Timer()
import requests
for i in range(num):
r = requests.get("http://127.0.0.1:8001/releases/_design/access/_view/yieldlinks")
assert r.status_code == 200
r.json # make sure the json is there
t("requests: %d" % (num,))
def couchdbkit(num):
import couchdbkit
t = Timer()
server = couchdbkit.Server("http://127.0.0.1:8001")
releases = server.get_db("releases")
for x in range(num):
for x in releases.view("access/yieldlinks"):
pass
t("couchdbkit: %d" %(num,))
num = 500
requests(num)
couchdbkit(num)
Per eseguire l'esempio probabilmente è necessario modificare l'URL vista. Ho verificato che le due invocazioni causano esattamente le stesse richieste GET sul server. Quindi questo sembra davvero collegarsi al funzionamento interno di couchdbkit ?!
Couchdbkit utilizza il Restkit (https://github.com/benoitc/restkit), è possibile confrontarlo e richiedere direttamente per vedere se è il collo di bottiglia. – mwhite
sto anche discutendo sulla lista degli utenti di couchdb sul problema. Benoit lo esaminerà. – hpk42