2016-08-18 10 views
0

クラウドデータベースからキーのセットを取得したい。私はいくつかの方法を試しました。ただし、custom_resultは他のメソッドと比較して高速に雷を実行します。なぜ誰かが説明できますか?雲母のベンチマーキング検索

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 

次のように私の出力は次のとおりです。custom_resultは非常に速く実行する理由

0.426064968109 
4.10079956055e-05 
0.409541845322 
0.819295167923 

誰かが私に言うことはできますか?

答えて

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 
関連する問題