test perf improvement of multicall

This commit is contained in:
Martijn Voncken 2008-01-21 18:28:09 +00:00
parent 217d7eaa90
commit c9a5caa3ec
1 changed files with 84 additions and 0 deletions

View File

@ -0,0 +1,84 @@
"""
test multicall.
"""
import time
from WebUi.webserver_common import ws
ws.init_06()
async_proxy = ws.async_proxy
#
#A: translate this into 1 multicall:
start = time.time()
stats = {
'download_rate':ws.proxy.get_download_rate(),
'upload_rate':ws.proxy.get_upload_rate(),
'max_download':ws.proxy.get_config_value('max_download_speed'),
'max_upload':ws.proxy.get_config_value('max_upload_speed'),
'num_connections':ws.proxy.get_num_connections(),
'max_num_connections':ws.proxy.get_config_value('max_connections_global')
}
print "sync-stats:",time.time() - start
print stats
#
#pattern:
#map callback to a a dict-setter
def dict_cb(key,d):
def callback(result):
d[key] = result
return callback
start = time.time()
d = {}
async_proxy.get_download_rate(dict_cb('download_rate',d))
async_proxy.get_upload_rate(dict_cb('upload_rate',d))
async_proxy.get_config_value(dict_cb('max_download',d),"max_download_speed")
async_proxy.get_config_value(dict_cb('max_download',d),"max_upload_speed")
async_proxy.get_num_connections(dict_cb("num_connections",d))
async_proxy.get_config_value(dict_cb('max_num_connections',d),"max_connections_global")
async_proxy.force_call(block=True)
print "Async-stats:",time.time() - start
print d
#
#B: translate this to multicall:
#
#old-sync:
start = time.time()
torrent_list = [ws.proxy.get_torrent_status(id,[])
for id in ws.proxy.get_session_state()
]
print "sync-list:",time.time() - start
print torrent_list
#new async:
start = time.time()
torrent_ids = ws.proxy.get_session_state() #Syc-api.
torrent_list = []
for id in torrent_ids:
async_proxy.get_torrent_status(torrent_list.append, id, [])
async_proxy.force_call(block=True)
print "Async-list:",time.time() - start
print torrent_list