pkg_vec: Optimize gross inefficiency.
This module tries to implement *unique* vector (without duplicating objects),
and does this by iterating thru all already existing elements. Thus,
complexity of adding N elements was O(N^2). However, there're no grave reasons
to do uniqueness at all:
1. First of all, if feeds are correct, there won't be duplicates.
2. Then, even if there will be, there won't be serious problems like
segfaults.
3. Finally, for quite a few operations vectors is constructed from a
hashtable, thus uniqueness is guaranteed (which reduces possible cases of
non-uniqueness to values of Depends: and friends).
All an all, remove dup check, and make ipkg work order of magnitude faster on
a feed with few thousands of packages.
git-svn-id: http://opkg.googlecode.com/svn/trunk@18
e8e0d7a0-c8d9-11dd-a880-
a1081c7ac358
int i;
int found = 0;
+#if 0
/* look for a duplicate pkg by name, version, and architecture */
for (i = 0; i < vec->len; i++)
if ((strcmp(pkg->name, vec->pkgs[i]->name) == 0)
found = 1;
break;
}
+#endif
/* we didn't find one, add it */
if(!found){
{
int i;
+#if 0
/* look for a duplicate pkg by name */
for(i = 0; i < vec->len; i++)
if (strcmp(pkg->name, vec->pkgs[i]->name) == 0)
/* we didn't find one, add it */
if(i == vec->len){
+#endif
vec->pkgs =
(abstract_pkg_t **)
realloc(vec->pkgs, (vec->len + 1) * sizeof(abstract_pkg_t *));
vec->pkgs[vec->len] = pkg;
vec->len++;
+#if 0
}
+#endif
}
abstract_pkg_t * abstract_pkg_vec_get(abstract_pkg_vec_t *vec, int i)