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的內部工作有關?
Couchdbkit使用Restkit(https://github.com/benoitc/restkit),你可以直接比較,並要求看看它的瓶頸。 – mwhite
我也在討論couchdb-users列表中關於這個問題。 Benoit正在研究它。 – hpk42