• Thomas Haller's avatar
    dns: refactor update() in NMDnsSystemdResolved to use a hash table · 4be4a3c2
    Thomas Haller authored
    Use a GHashTable instead of a GArray to construct the list of
    @interfaces. Also, use NMCListElem instead of GList. With this,
    the runtime is O(n*log(n)) instead of O(n^2).
    
    I belive, we should take care that all our code has a reasonable
    runtime complexity, even in common use-cases the number of elements
    is small. This is not about performace, because likely we expect few
    entries anyway, and the direct GArray implementation is likely faster
    in those cases. It's about using the data structure that best suits the
    access pattern.
    
    The log(n) part comes from sorting the keys. I also believe we should
    always aim for a stable behavior. When sending the D-Bus request to
    resolved, the order of elements should be in ~some~ defined order.
    4be4a3c2
Name
Last commit
Last update
clients Loading commit data...
contrib Loading commit data...
data Loading commit data...
dispatcher Loading commit data...
docs Loading commit data...
examples Loading commit data...
introspection Loading commit data...
libnm Loading commit data...
libnm-core Loading commit data...
libnm-glib Loading commit data...
libnm-util Loading commit data...
m4 Loading commit data...
man Loading commit data...
po Loading commit data...
shared Loading commit data...
src Loading commit data...
tools Loading commit data...
vapi Loading commit data...
.dir-locals.el Loading commit data...
.gitignore Loading commit data...
.travis.yml Loading commit data...
AUTHORS Loading commit data...
CONTRIBUTING Loading commit data...
COPYING Loading commit data...
ChangeLog Loading commit data...
MAINTAINERS Loading commit data...
Makefile.am Loading commit data...
Makefile.examples Loading commit data...
Makefile.glib Loading commit data...
Makefile.vapigen Loading commit data...
NEWS Loading commit data...
NetworkManager.pc.in Loading commit data...
README Loading commit data...
TODO Loading commit data...
autogen.sh Loading commit data...
config.h.meson Loading commit data...
configure.ac Loading commit data...
linker-script-binary.ver Loading commit data...
linker-script-devices.ver Loading commit data...
linker-script-settings.ver Loading commit data...
meson.build Loading commit data...
meson_options.txt Loading commit data...
meson_post_install.py Loading commit data...
valgrind.suppressions Loading commit data...
zanata.xml Loading commit data...