Speed up nmci device_status and connection_show before massive use
Retrieving all the properties from D-bus consumes a lot of time:
>>> meas(dbus, 100)
last: 8.146s
>>> meas(nmcli, 100)
last: 3.123s
here meas
simply measures time.monotonic()
difference, of 100 execution of dbus
function (nmci.nmutil.device_status()
) and nmcli
function nmci.process.nmcli("device status")
, so engaging D-bus makes it more than twice as slow. Interesting that it is consistent across orders (with 150, 50 or 10 reps. it is still slightly more than twice as slow). @thaller any idea how to speed this up? (I was thinking that D-bus connections are somehow cached within nmci.dbus
module, but it does not seem to be the case; or each call consumes a lot of time - also not consisent with what you said, that nmcli
does many D-bus call, so adding a few should not be a big deal).
If D-bus cache is not possible, I would propose adding argument fast=True
which would not do any extra D-bus call (not needed in 99% of cases), and parse the name from nmcli
's stdout - some nasty names would require extra behave steps that would call these functions with fast=False
.