]> git.proxmox.com Git - mirror_qemu.git/commit - block/qcow2-cache.c
qcow2: use a hash to look for entries in the L2 cache
authorAlberto Garcia <berto@igalia.com>
Mon, 11 May 2015 12:54:57 +0000 (15:54 +0300)
committerKevin Wolf <kwolf@redhat.com>
Fri, 22 May 2015 15:08:01 +0000 (17:08 +0200)
commit812e4082cae73e12fd425cace4fd3a715a7c1d32
treed7405b5a8c87135628ea2d72a7ba93786969f96f
parentfdfbca82a0874916007ca76323cd35f2af8a2ef3
qcow2: use a hash to look for entries in the L2 cache

The current cache algorithm traverses the array starting always from
the beginning, so the average number of comparisons needed to perform
a lookup is proportional to the size of the array.

By using a hash of the offset as the starting point, lookups are
faster and independent from the array size.

The hash is computed using the cluster number of the table, multiplied
by 4 to make it perform better when there are collisions.

In my tests, using a cache with 2048 entries, this reduces the average
number of comparisons per lookup from 430 to 2.5.

Signed-off-by: Alberto Garcia <berto@igalia.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
block/qcow2-cache.c