import org.styloot.hobo.*; import org.styloot.hobo.Item; import java.util.*; public class HasFeaturesBenchmark { public static final int NUM_RUNS = 100000; public static final int FEATURES_PER_ITEM = 10; public static final int FEATURES_PER_QUERY = 4; private static Vector<String> randomFeatureSet(int numFeatures) { Vector<String> f = new Vector<String>(); for (int j=0;j<numFeatures;j++) { if (Math.random() > 0.5) { f.add("feature-" + j); } } return f; } private static Item[] getItems(int numItems) { Item[] result = new Item[numItems]; for (int i=0;i<numItems;i++) { result[i] = new Item("id-" + i, "/baz", randomFeatureSet(FEATURES_PER_ITEM), 3, null, 5); } return result; } public static void main(String[] args) { Item[] items = getItems(NUM_RUNS); Feature[] features = Feature.getFeatures(randomFeatureSet(FEATURES_PER_QUERY)); long unsortedBeginTime = System.nanoTime(); for (int i=0;i<NUM_RUNS;i++) { items[i].hasFeatures(features); } double unsortedTime = ((double)(System.nanoTime() - unsortedBeginTime)) / NUM_RUNS; long sortedBeginTime = System.nanoTime(); for (int i=0;i<NUM_RUNS;i++) { items[i].hasFeaturesSorted(features); } double sortedTime = ((double)(System.nanoTime() - sortedBeginTime)) / NUM_RUNS; System.out.println("HasFeatures benchmark: "); System.out.println("Unsorted: " + unsortedTime + "ns"); System.out.println("Sorted: " + sortedTime + "ns"); } }