5

私はcouchdbと推奨される「couchdbkit」pythonパッケージで遊んでいました。少し遅いと感じて、測定することにしました。私が何か間違ったことをしなかった場合、人気のある「リクエスト」パッケージを使用すると、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を変更する必要があります。2つの呼び出しによって、サーバー上でまったく同じGET要求が発生することを確認しました。それで、これは本当にcouchdbkitの内部動作に関連しているようです?!

4

1 に答える 1

2

だから私はついに問題を見つけました、それは実際にはこれと同じです:

CouchDB / MochiWeb:持続的接続の悪影響

要するに、追加:

[httpd]
socket_options = [{nodelay, true}]

パフォーマンスの違いを解決します-実際、couchdbkit/restkitは少し速くなりました。

于 2012-12-10T23:09:10.687 に答える