Martin Geisler <[EMAIL PROTECTED]> writes: > I'm thinking that there might be some unfortunate overhead in the > preprocessing book-keeping. We should try running benchmark.py under > a profiler to see where the time is spent.
There is now support for a --profile flag, and running benchmark.py with it gives (1000 actively secure multiplications, 4 players): 2706417 function calls (2113774 primitive calls) in 37.755 CPU seconds Ordered by: internal time, call count List reduced from 301 to 40 due to restriction <40> ncalls tottime percall cumtime percall filename:lineno(function) 58 6.642 0.115 34.640 0.597 selectreactor.py:82(doSelect) 230033/17014 6.011 0.000 29.850 0.002 defer.py:306(_runCallbacks) 305044/249023 3.099 0.000 9.937 0.000 defer.py:168(addCallbacks) 35000 1.637 0.000 8.042 0.000 runtime.py:1088(mul) 46504 1.338 0.000 4.218 0.000 runtime.py:184(__init__) 105115 1.310 0.000 1.780 0.000 field.py:371(__mul__) 188307 1.269 0.000 1.269 0.000 field.py:339(__init__) 2000 1.053 0.001 12.017 0.006 matrix.py:128(__mul__) 117027/21014 0.992 0.000 27.129 0.001 defer.py:283(_startRunCallbacks) 72000 0.848 0.000 1.486 0.000 field.py:342(__add__) 192023/158017 0.820 0.000 8.283 0.000 defer.py:185(addCallback) 117027/21014 0.807 0.000 27.282 0.001 defer.py:229(callback) 37000 0.799 0.000 2.382 0.000 runtime.py:137(clone) 115512 0.762 0.000 1.368 0.000 runtime.py:70(__init__) 15006 0.603 0.000 0.603 0.000 runtime.py:574(_expect_data) 102008/67006 0.525 0.000 8.953 0.000 runtime.py:208(_callback_fired) 48003/6003 0.518 0.000 21.195 0.004 runtime.py:353(inc_pc_wrapper) 36000 0.514 0.000 6.201 0.000 runtime.py:742(add) 9000 0.494 0.000 1.285 0.000 shamir.py:95(recombine) 43504 0.373 0.000 5.085 0.000 runtime.py:216(gather_shares) 19006 0.340 0.000 1.051 0.000 runtime.py:306(sendData) 70 0.336 0.005 27.819 0.397 basic.py:345(dataReceived) 15009 0.328 0.000 27.483 0.002 runtime.py:267(stringReceived) 117026 0.287 0.000 0.287 0.000 defer.py:162(__init__) 19009 0.272 0.000 0.517 0.000 abstract.py:164(write) 6000 0.263 0.000 0.455 0.000 matrix.py:201(transpose) 3000 0.249 0.000 2.507 0.001 runtime.py:719(exchange) 2000 0.249 0.000 1.053 0.001 shamir.py:30(share) 36000 0.233 0.000 1.174 0.000 runtime.py:754(<lambda>) 15000/4000 0.203 0.000 3.775 0.001 runtime.py:534(schedule_callback) 15006 0.197 0.000 1.249 0.000 runtime.py:608(_expect_share) 19009 0.195 0.000 0.712 0.000 basic.py:357(sendString) 34000 0.187 0.000 0.697 0.000 runtime.py:1102(<lambda>) 2000 0.178 0.000 1.254 0.001 prss.py:69(convert_replicated_shamir) 504 0.176 0.000 0.263 0.001 defer.py:458(__init__) 88000 0.167 0.000 0.167 0.000 matrix.py:72(__getitem__) 6000 0.160 0.000 0.160 0.000 prss.py:260(__init__) 6000 0.155 0.000 0.155 0.000 prss.py:326(__call__) 37000 0.150 0.000 4.225 0.000 runtime.py:144(split_result) 34000 0.146 0.000 5.500 0.000 runtime.py:105(__rmul__) I'm not really sure how to interpret this... If any of you want to investigate, then here's a link to the manual: http://docs.python.org/lib/module-profile.html :-) -- Martin Geisler _______________________________________________ viff-devel mailing list (http://viff.dk/) viff-devel@viff.dk http://lists.viff.dk/listinfo.cgi/viff-devel-viff.dk