On Tue, May 21, 2024 at 17:36:48 +0530, Rayhan Faizel wrote:
Currently, monitor event names are looked up using binary search
which has
O(log(n)) time complexity. This can be optimized even further with a
compile-time static hash table generated by the gperf tool. As gperf ensures
perfect hashing, lookup times are guaranteed to be O(1).
As a first point I'd like to ask if you are seeing any specific
performance problems with the existing code and ideally elaborate in
which cases.
This is a non-trivial change and with a justification in this commit
message I'm not really convinced that it's needed.
Unless QEMU would be firing a massive amount of events it is unlikely
that the lookup of the event will even have measurable impact.
It's also very likely that the lookup of the event handler is
overshadowed by the complexity of the actual handler, thus is the impact
even measurable?
This patch also makes gperf a requirement for compiling libvirt if
the QEMU
driver is enabled.
Based on the above question I'm not persuaded that this is really
justified at this point.
Note that such change will also require update to the .spec. file
libvirt ships in the repo.
Signed-off-by: Rayhan Faizel <rayhan.faizel(a)gmail.com>
---
docs/kbase/internals/qemu-event-handlers.rst | 13 +-
meson.build | 2 +
src/qemu/meson.build | 9 +
src/qemu/qemu_monitor_event.gperf | 68 ++++++++
src/qemu/qemu_monitor_json.c | 171 +++++--------------
src/qemu/qemu_monitor_json.h | 45 +++++
6 files changed, 170 insertions(+), 138 deletions(-)
create mode 100644 src/qemu/qemu_monitor_event.gperf