[英]couchdbkit 10x slower than requests?
我正在使用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。 我验证了这两个调用导致服务器上完全相同的GET请求。 所以这真的似乎与couchdbkit的内部工作有关?!
所以我终于找到了这个问题,它实际上和这个问题一样:
简而言之,添加:
[httpd]
socket_options = [{nodelay, true}]
解决了性能差异 - 实际上couchdbkit / restkit现在更快了一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.