public void getPerformanceTest() { final int numEntries = 500; final int numCycles = 5; final int numGets = numCycles * numEntries; final int minEntrySize = 50; final int maxEntrySize = 1000; final Random random = new Random(); File dbDir = createDbDir("getPerformanceTest"); Environment dbEnvironment = BerkeleyDBViewComputationCacheSource.constructDatabaseEnvironment(dbDir, false); BerkeleyDBBinaryDataStore dataStore = new BerkeleyDBBinaryDataStore(dbEnvironment, "getPerformanceTest"); dataStore.start(); int randRange = maxEntrySize - minEntrySize; for (int i = 0; i < numEntries; i++) { int nBytes = minEntrySize + random.nextInt(randRange); byte[] bytes = new byte[nBytes]; random.nextBytes(bytes); dataStore.put(i, bytes); } OperationTimer timer = new OperationTimer(s_logger, "Loading {} entries", numGets); for (int j = 0; j < numCycles; j++) { for (int i = 0; i < numEntries; i++) { byte[] data = dataStore.get(i); assertNotNull(data); assertTrue(data.length >= minEntrySize); assertTrue(data.length <= maxEntrySize); } } long numMillis = timer.finished(); double msPerGet = ((double) numMillis) / ((double) numGets); double getsPerSecond = 1000.0 / msPerGet; s_logger.info( "for {} gets, {} ms/get, {} gets/sec", new Object[] {numGets, msPerGet, getsPerSecond}); dataStore.delete(); dataStore.stop(); dbEnvironment.close(); }