From 3cdd1c16fb1b03892da1afd3d03b30fe0df80b5c Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Fri, 11 Feb 2022 13:55:39 -0800 Subject: [PATCH] Improved code [skip ci] --- src/ivfkmeans.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/ivfkmeans.c b/src/ivfkmeans.c index fa7db49..60a07f7 100644 --- a/src/ivfkmeans.c +++ b/src/ivfkmeans.c @@ -121,15 +121,18 @@ QuickCenters(Relation index, VectorArray samples, VectorArray centers) FmgrInfo *normprocinfo = IvfflatOptionalProcInfo(index, IVFFLAT_KMEANS_NORM_PROC); /* Copy existing vectors while avoiding duplicates */ - qsort(samples->items, samples->length, VECTOR_SIZE(samples->dim), CompareVectors); - for (i = 0; i < samples->length; i++) + if (samples->length > 0) { - vec = VectorArrayGet(samples, i); - - if (i == 0 || CompareVectors(vec, VectorArrayGet(samples, i - 1)) != 0) + qsort(samples->items, samples->length, VECTOR_SIZE(samples->dim), CompareVectors); + for (i = 0; i < samples->length; i++) { - VectorArraySet(centers, centers->length, vec); - centers->length++; + vec = VectorArrayGet(samples, i); + + if (i == 0 || CompareVectors(vec, VectorArrayGet(samples, i - 1)) != 0) + { + VectorArraySet(centers, centers->length, vec); + centers->length++; + } } }