@Parameterized.Parameters
public static List<Object[]> generateData() {
RandomUtils.useTestSeed();
Matrix dataPoints = LumpyData.lumpyRandomData(NUM_DATA_POINTS, NUM_DIMENSIONS);
Matrix queries = LumpyData.lumpyRandomData(NUM_QUERIES, NUM_DIMENSIONS);
DistanceMeasure distanceMeasure = new CosineDistanceMeasure();
Searcher bruteSearcher = new BruteSearch(distanceMeasure);
bruteSearcher.addAll(dataPoints);
Pair<List<List<WeightedThing<Vector>>>, Long> reference = getResultsAndRuntime(bruteSearcher, queries);
Pair<List<WeightedThing<Vector>>, Long> referenceSearchFirst =
getResultsAndRuntimeSearchFirst(bruteSearcher, queries);
double bruteSearchAvgTime = reference.getSecond() / (queries.numRows() * 1.0);
System.out.printf("BruteSearch: avg_time(1 query) %f[s]\n", bruteSearchAvgTime);
return Arrays.asList(new Object[][]{
{new ProjectionSearch(distanceMeasure, 3, 10), dataPoints, queries, reference, referenceSearchFirst},
{new FastProjectionSearch(distanceMeasure, 3, 10), dataPoints, queries, reference, referenceSearchFirst},
{new ProjectionSearch(distanceMeasure, 5, 5), dataPoints, queries, reference, referenceSearchFirst},
{new FastProjectionSearch(distanceMeasure, 5, 5), dataPoints, queries, reference, referenceSearchFirst},
}
);
}