2012-12-10 25 views
5

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 ?!

+0

Couchdbkit utilizza il Restkit (https://github.com/benoitc/restkit), è possibile confrontarlo e richiedere direttamente per vedere se è il collo di bottiglia. – mwhite

+0

sto anche discutendo sulla lista degli utenti di couchdb sul problema. Benoit lo esaminerà. – hpk42

risposta

Problemi correlati