2012-12-10 49 views
5

我在玩couchdb和推薦的「couchdbkit」python軟件包。我感覺它有點慢,並決定做一些測量。如果我沒有做錯什麼,那麼使用流行的「請求」包比通過couchdbkit的速度快10倍以上。爲什麼?couchdbkit比請求慢10倍?

這裏是我使用的定時腳本:

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) 

對於運行,你可能需要修改視圖URL的例子。我驗證了這兩個調用導致服務器上的GET請求完全相同。所以這真的好像與couchdbkit的內部工作有關?

+0

Couchdbkit使用Restkit(https://github.com/benoitc/restkit),你可以直接比較,並要求看看它的瓶頸。 – mwhite

+0

我也在討論couchdb-users列表中關於這個問題。 Benoit正在研究它。 – hpk42

回答