2016-08-18 63 views
0

我想從cloudant db中檢索一組密鑰。我嘗試了幾種方法。但是,與其他方法相比,custom_result閃電般快速。有人能解釋爲什麼嗎?Cloudant中的基準檢索

from cloudant import cloudant 
import json 
import time 
from cloudant.result import Result,ResultByKey 


with open('credentials.json') as f: 
    cred = json.load(f) 

with cloudant(str(cred['credentials']['username']),str(cred['credentials']['password']),url=str(cred['credentials']['url'])) as client: 
    my_database = client['my_database'] 

    #Using POST 
    payload = {"keys": ["012","345"]} 
    end_point = '{0}/{1}'.format(client.server_url, 'my_database/_all_docs') 
    params = {'include_docs': 'true'} 
    start = time.time() 
    response = client.r_session.post(end_point, data=json.dumps(payload), params=params) 
    end = time.time() 
    print end-start 


    #using custom_result 
    start = time.time() 
    result = my_database.custom_result(include_docs=True,keys=["012","345"]) 
    end = time.time() 
    print end-start 


    #using all_doc 
    start = time.time() 
    result = my_database.all_docs(include_docs=True,keys=["012","345"]) 
    end = time.time() 
    print end-start 


    #using iteration 
    keys=["012","345"] 
    start = time.time() 
    result=[] 
    result_collection = Result(my_database.all_docs, include_docs=True) 
    for i in range(len(keys)): 
     result.append(result_collection[ResultByKey(i)]) 
    end = time.time() 
    print end-start 

我的輸出如下:

0.426064968109 
4.10079956055e-05 
0.409541845322 
0.819295167923 

有人能告訴我爲什麼custom_result進行得這麼快?

回答

1

函數database.custom_result()僅創建cloudant.result.Result實例,不會從Cloudant返回結果。您可以嘗試以這種方式進行測試,從Cloudant獲取響應的整個過程都將結束。

start = time.time() 
with database.custom_result(include_docs=True) as result: 
    data = result[:] 
end = time.time() 
print end-start