2012-12-10 36 views
5

मैं couchdb और अनुशंसित "couchdbkit" पायथन पैकेज के साथ खेल रहा था। मुझे लगा कि यह थोड़ा धीमा था और कुछ माप करने का फैसला किया। अगर मैंने कुछ गलत नहीं किया है, तो लोकप्रिय "अनुरोध" पैकेज का उपयोग करके couchdbkit के माध्यम से जाने से 10 गुना तेज है। क्यूं कर?couchdbkit 10x धीमी है?

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 सूची पर भी चर्चा कर रहा हूं। बेनोइट इसे देखने जा रहा है। – hpk42

उत्तर

2

तो मैं अंत में, इस मुद्दे पाया यह वास्तव में इस एक के रूप में ही है:

CouchDB/MochiWeb : negative effect of persistent connections

संक्षेप में, जोड़ने:

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

पर्फ़ अंतर का समाधान करता है - वास्तव couchdbkit में/restkit अब थोड़ा तेज है।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^