Created
October 25, 2013 20:29
-
-
Save emoseman/7161332 to your computer and use it in GitHub Desktop.
Some tests for array search performance.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.aol.data.api.query; | |
import com.google.common.collect.ImmutableList; | |
import com.google.common.collect.ImmutableMap; | |
import com.google.common.collect.ImmutableSortedMap; | |
import org.apache.commons.lang3.time.StopWatch; | |
import org.slf4j.Logger; | |
import org.slf4j.LoggerFactory; | |
import java.security.SecureRandom; | |
import java.util.Arrays; | |
/** | |
* Class Description TODO | |
* | |
* @author Evan Moseman ([email protected]) | |
* @version 1.0 | |
* @since 10/15/13 | |
*/ | |
public class DBUtilsTest { | |
private static final Logger log = LoggerFactory.getLogger(DBUtilsTest.class); | |
private static | |
//@formatter:off | |
int[] types = {2003,-5,-2,-7,2004,16,1,2005,70,91,3,2001,8,6,4,2000,-16,-4,-1,-15,2011,0,2,-9,1111,7,2006,-8,5,2009,2002,92,93,-6,-3,12}; | |
int[] typesQuarterMisses = {2003,-5,-2,-7,2004,16,1,2005,70,91,3,2001,8,6,4,2000,-16,-4,-1,-15,2011,0,2,-9,1111,7,2006,-8,5,2009,2002,92,93,-6,-3,12,0,0,0,0,0,0,0,0,0}; | |
int[] typesHalfMisses = {2003, -5, -2,-7,2004,16,1,2005,70,91,3,2001,8,6,4,2000,-16,-4,-1,-15,2011,0,2,-9,1111,7,2006,-8,5,2009,2002,92,93,-6,-3,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; | |
// @Test | |
public void testperf() | |
throws Exception { | |
ImmutableList<Integer> A = ImmutableList.of(-15, -9, 1, 12, 91, 92, 93, 1111, 2002, 2009); | |
int[] B = {-15, -9, 1, 12, 91, 92, 93, 1111, 2002, 2009}; | |
ImmutableMap<Integer, Integer> | |
C = ImmutableMap.<Integer, Integer>builder().put(-15, 0).put(-9, 0).put(1, 0).put(12, 0).put(91, 0).put(92, 0).put(93, 0).put( | |
1111, 0).put(2002, 0).put(2009, 0).build(); | |
ImmutableSortedMap<Integer, Integer> D = ImmutableSortedMap.copyOf(C); | |
int n = 1000000; | |
int num; | |
SecureRandom sr = new SecureRandom(); | |
StopWatch sw = new StopWatch(); | |
sw.start(); | |
for (int i = 0; i < n; i++) { | |
sw.suspend(); | |
num = typesHalfMisses[sr.nextInt(typesHalfMisses.length)]; | |
sw.resume(); | |
A.contains(num); | |
} | |
sw.stop(); | |
log.info("ImmutableList: {}", sw); | |
sw.reset(); | |
sw.start(); | |
for (int i = 0; i < n; i++) { | |
sw.suspend(); | |
num = typesHalfMisses[sr.nextInt(typesHalfMisses.length)]; | |
sw.resume(); | |
C.containsKey(num); | |
} | |
sw.stop(); | |
log.info("ImmutableMap: {}", sw); | |
sw.reset(); | |
sw.start(); | |
for (int i = 0; i < n; i++) { | |
sw.suspend(); | |
num = typesHalfMisses[sr.nextInt(typesHalfMisses.length)]; | |
sw.resume(); | |
D.containsKey(num); | |
} | |
sw.stop(); | |
log.info("ImmutableSortedMap: {}", sw); | |
sw.reset(); | |
sw.start(); | |
for (int i = 0; i < n; i++) { | |
sw.suspend(); | |
num = typesHalfMisses[sr.nextInt(typesHalfMisses.length)]; | |
sw.resume(); | |
Arrays.binarySearch(B, num); | |
} | |
sw.stop(); | |
log.info("Arrays.binarySearch: {}", sw); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment