]> xenbits.xensource.com Git - libvirt.git/commit
Optimize the elements the iterator visits.
authorStefan Berger <stefanb@linux.vnet.ibm.com>
Wed, 11 Jan 2012 11:42:37 +0000 (06:42 -0500)
committerStefan Berger <stefanb@us.ibm.com>
Wed, 11 Jan 2012 11:42:37 +0000 (06:42 -0500)
commit134c56764f803c526239ac570e5c385d24d6eb1d
treedb6c2670935bcde70d723b05e19c5d2d8c093585
parentd82ef7c39dec9c7ab655ecc5b6395d4f6d7ff67b
Optimize the elements the iterator visits.

In this patch we introduce testing whether the iterator points to a
unique set of entries that have not been seen before at one of the previous
iterations. The point is to eliminate duplicates and with that unnecessary
filtering rules by preventing identical filtering rules from being
instantiated.
Example with two lists:

list1 = [1,2,1]
list2 = [1,3,1]

The 1st iteration would take the 1st items of each list -> 1,1
The 2nd iteration would take the 2nd items of each list -> 2,3
The 3rd iteration would take the 3rd items of each list -> 1,1 but
skip them since this same pair has already been encountered in the 1st
iteration

Implementation-wise this is solved by taking the n-th element of list1 and
comparing it against elements 1..n-1. If no equivalent is found, then there
is no possibility of this being a duplicate. In case an equivalent element
is found at position i, then the n-th element in the 2nd list is compared
against the i-th element in the 2nd list and if that is not the same, then
this is a unique pair, otherwise it is not unique and we may need to do
the same comparison on the 3rd list.
src/conf/nwfilter_params.c