public static void main(String[] args) { long startTime = System.currentTimeMillis(); new AnnotationTreePerformanceTester().testPerformance(); long endTime = System.currentTimeMillis(); long time = endTime - startTime; long seconds = time / 1000; System.out.println("time: " + seconds + "s"); } }
void applyRandomDelete(RawAnnotationSet<Object> a, RawAnnotationSet<Object> b, Random random) throws OperationException { int pos = random.nextInt(b.size()); int length = random.nextInt(Math.min(DELETE_LENGTH_LIMIT, b.size() - pos)); if (a != null) { delete(a, pos, length); } delete(b, pos, length); }
applyRandomInsert(a, b, random); } else if (b.size() >= MAX_LENGTH) { switch (random.nextInt(2)) { case 0: applyRandomDelete(a, b, random); break; case 1: applyRandomSet(a, b, keys, values, random); break; switch (random.nextInt(3)) { case 0: applyRandomInsert(a, b, random); break; case 1: applyRandomDelete(a, b, random); break; case 2: applyRandomSet(a, b, keys, values, random); break;
void testPerformance1(Random random) { RawAnnotationSet<Object> a = new SimpleAnnotationSet(null); RawAnnotationSet<Object> b = new AnnotationTree<Object>(new Object(), new Object(), null); String[] keys = new String[NUM_KEYS]; for (int i = 0; i < keys.length; i++) { keys[i] = "k" + i; } String[] values = new String[NUM_KEYS]; for (int i = 0; i < values.length; i++) { values[i] = "v" + i; } int maxLength = 0; RawAnnotationSet<Object> c = b; for (int i = 0; i < NUM_UPDATES; i++) { applyRandomOperation(null, c, keys, values, random); maxLength = Math.max(maxLength, c.size()); for (int j = 0; j < QUERIES_PER_UPDATE; j++) { performRandomQuery(c, keys, random); } } System.err.println("final length=" + c.size() + ", max length=" + maxLength); }
void applyRandomSet(RawAnnotationSet<Object> a, RawAnnotationSet<Object> b, String[] keys, String[] values, Random random) throws OperationException { int start = random.nextInt(b.size()); int end = 1 + random.nextInt(b.size()); if (start > end) { int swap = start; start = end; end = swap; } String key = keys[random.nextInt(keys.length)]; Object value = values[random.nextInt(values.length)]; if (a != null) { setAnnotation(a, start, end, key, value); } setAnnotation(b, start, end, key, value); }
applyRandomInsert(a, b, random); } else if (b.size() >= MAX_LENGTH) { switch (random.nextInt(2)) { case 0: applyRandomDelete(a, b, random); break; case 1: applyRandomSet(a, b, keys, values, random); break; switch (random.nextInt(3)) { case 0: applyRandomInsert(a, b, random); break; case 1: applyRandomDelete(a, b, random); break; case 2: applyRandomSet(a, b, keys, values, random); break;
void testPerformance1(Random random) { RawAnnotationSet<Object> a = new SimpleAnnotationSet(null); RawAnnotationSet<Object> b = new AnnotationTree<Object>(new Object(), new Object(), null); String[] keys = new String[NUM_KEYS]; for (int i = 0; i < keys.length; i++) { keys[i] = "k" + i; } String[] values = new String[NUM_KEYS]; for (int i = 0; i < values.length; i++) { values[i] = "v" + i; } int maxLength = 0; RawAnnotationSet<Object> c = b; for (int i = 0; i < NUM_UPDATES; i++) { applyRandomOperation(null, c, keys, values, random); maxLength = Math.max(maxLength, c.size()); for (int j = 0; j < QUERIES_PER_UPDATE; j++) { performRandomQuery(c, keys, random); } } System.err.println("final length=" + c.size() + ", max length=" + maxLength); }
void applyRandomSet(RawAnnotationSet<Object> a, RawAnnotationSet<Object> b, String[] keys, String[] values, Random random) throws OperationException { int start = random.nextInt(b.size()); int end = 1 + random.nextInt(b.size()); if (start > end) { int swap = start; start = end; end = swap; } String key = keys[random.nextInt(keys.length)]; Object value = values[random.nextInt(values.length)]; if (a != null) { setAnnotation(a, start, end, key, value); } setAnnotation(b, start, end, key, value); }
public static void main(String[] args) { long startTime = System.currentTimeMillis(); new AnnotationTreePerformanceTester().testPerformance(); long endTime = System.currentTimeMillis(); long time = endTime - startTime; long seconds = time / 1000; System.out.println("time: " + seconds + "s"); } }
void applyRandomDelete(RawAnnotationSet<Object> a, RawAnnotationSet<Object> b, Random random) throws OperationException { int pos = random.nextInt(b.size()); int length = random.nextInt(Math.min(DELETE_LENGTH_LIMIT, b.size() - pos)); if (a != null) { delete(a, pos, length); } delete(b, pos, length); }