]> git.baikalelectronics.ru Git - kernel.git/commit
kvm: memslots: replace heap sort with an insertion sort pass
authorIgor Mammedov <imammedo@redhat.com>
Thu, 13 Nov 2014 23:00:13 +0000 (23:00 +0000)
committerPaolo Bonzini <pbonzini@redhat.com>
Fri, 14 Nov 2014 09:49:04 +0000 (10:49 +0100)
commit6b0c351cc6e266934dea357a3ec913db4589e8ce
treec7ce69f00f8b1edfd89ca621d51a590709b5f14f
parent87b3acdc81d4928ecc76fe37bc96846bde1b7af1
kvm: memslots: replace heap sort with an insertion sort pass

memslots is a sorted array.  When a slot is changed, heapsort (lib/sort.c)
would take O(n log n) time to update it; an optimized insertion sort will
only cost O(n) on an array with just one item out of order.

Replace sort() with a custom sort that takes advantage of memslots usage
pattern and the known position of the changed slot.

performance change of 128 memslots insertions with gradually increasing
size (the worst case):

      heap sort   custom sort
max:  249747      2500 cycles

with custom sort alg taking ~98% less then original
update time.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
virt/kvm/kvm_main.c