package gnu.trove.benchmark.compare;
import cern.colt.map.OpenIntObjectHashMap;
import com.google.caliper.Param;
import com.google.caliper.SimpleBenchmark;
import java.util.HashMap;
import java.util.Map;
/**
*
*/
@SuppressWarnings( { "UnusedDeclaration", "MismatchedQueryAndUpdateOfCollection" } )
public class LibraryCompareBenchmark extends SimpleBenchmark {
@Param int size;
// java.util
private Integer[] int_obj_array = null;
private Map<Integer,String> java_empty_map;
private Map<Integer,String> java_populated_map;
// Colt
private OpenIntObjectHashMap colt_empty_map;
private OpenIntObjectHashMap colt_populated_map;
// Trove 2
private gnu.trove.TIntObjectHashMap<String> trove2_empty_map;
private gnu.trove.TIntObjectHashMap<String> trove2_populated_map;
// Trove 2 - THashMap
private Map<Integer,String> trove2_empty_obj_map;
private Map<Integer,String> trove2_populated_obj_map;
// Trove 3 - TIntObjectHashMap
private gnu.trove.map.TIntObjectMap<String> trove3_empty_map;
private gnu.trove.map.TIntObjectMap<String> trove3_populated_map;
// Trove 3 - THashMap
private Map<Integer,String> trove3_empty_obj_map;
private Map<Integer,String> trove3_populated_obj_map;
@Override
protected void setUp() throws Exception {
if ( int_obj_array == null ) {
int_obj_array = new Integer[ size ];
for( int i = 0; i < size; i++ ) {
int_obj_array[ i ] = Integer.valueOf( i );
}
}
java_empty_map = new HashMap<Integer, String>();
java_populated_map = new HashMap<Integer, String>( size );
for( int i = 0; i < size; i++ ) {
java_populated_map.put( Integer.valueOf( i ), "value" );
}
colt_empty_map = new OpenIntObjectHashMap();
colt_populated_map = new OpenIntObjectHashMap( size );
for( int i = 0; i < size; i++ ) {
colt_populated_map.put( i, "value" );
}
trove2_empty_map = new gnu.trove.TIntObjectHashMap<String>();
trove2_populated_map = new gnu.trove.TIntObjectHashMap<String>( size );
for( int i = 0; i < size; i++ ) {
trove2_populated_map.put( i, "value" );
}
trove2_empty_obj_map = new gnu.trove.THashMap<Integer,String>();
trove2_populated_obj_map = new gnu.trove.THashMap<Integer,String>();
for( int i = 0; i < size; i++ ) {
trove2_populated_obj_map.put( Integer.valueOf( i ), "value" );
}
trove3_empty_map = new gnu.trove.map.hash.TIntObjectHashMap<String>();
trove3_populated_map = new gnu.trove.map.hash.TIntObjectHashMap<String>( size );
for( int i = 0; i < size; i++ ) {
trove3_populated_map.put( i, "value" );
}
trove3_empty_obj_map = new gnu.trove.map.hash.THashMap<Integer,String>();
trove3_populated_obj_map = new gnu.trove.map.hash.THashMap<Integer,String>( size );
for( int i = 0; i < size; i++ ) {
trove3_populated_obj_map.put( Integer.valueOf( i ), "value" );
}
}
@Override
protected void tearDown() throws Exception {
java_empty_map.clear();
java_populated_map.clear();
colt_empty_map.clear();
colt_populated_map.clear();
trove2_empty_map.clear();
trove2_populated_map.clear();
trove2_empty_obj_map.clear();
trove2_populated_obj_map.clear();
trove3_empty_map.clear();
trove3_populated_map.clear();
trove3_empty_obj_map.clear();
trove3_populated_obj_map.clear();
}
/////////////////////////////////////////////////////
// put
public void timeJavaPut( int reps ) {
for( int r = 0; r < reps; r++ ) {
for( int i = 0; i < size; i ++ ) {
java_empty_map.put( int_obj_array[ i ], "value" );
}
}
}
public void timeColtPut( int reps ) {
for( int r = 0; r < reps; r++ ) {
for( int i = 0; i < size; i ++ ) {
colt_empty_map.put( i, "value" );
}
}
}
public void timeTrove2Put( int reps ) {
for( int r = 0; r < reps; r++ ) {
for( int i = 0; i < size; i ++ ) {
trove2_empty_map.put( i, "value" );
}
}
}
public void timeTrove2ObjectPut( int reps ) {
for( int r = 0; r < reps; r++ ) {
for( int i = 0; i < size; i ++ ) {
trove2_empty_obj_map.put( int_obj_array[ i ], "value" );
}
}
}
public void timeTrove3Put( int reps ) {
for( int r = 0; r < reps; r++ ) {
for( int i = 0; i < size; i ++ ) {
trove3_empty_map.put( i, "value" );
}
}
}
public void timeTrove3ObjectPut( int reps ) {
for( int r = 0; r < reps; r++ ) {
for( int i = 0; i < size; i ++ ) {
trove3_empty_obj_map.put( int_obj_array[ i ], "value" );
}
}
}
/////////////////////////////////////////////////////
// get
public void timeJavaGet( int reps ) {
for( int r = 0; r < reps; r++ ) {
for( int i = 0; i < size; i++ ) {
java_populated_map.get( int_obj_array[ i ] );
}
}
}
public void timeColtGet( int reps ) {
for( int r = 0; r < reps; r++ ) {
for( int i = 0; i < size; i++ ) {
colt_populated_map.get( i );
}
}
}
public void timeTrove2Get( int reps ) {
for( int r = 0; r < reps; r++ ) {
for( int i = 0; i < size; i++ ) {
trove2_populated_map.get( i );
}
}
}
public void timeTrove2ObjectGet( int reps ) {
for( int r = 0; r < reps; r++ ) {
for( int i = 0; i < size; i++ ) {
trove2_populated_obj_map.get( int_obj_array[ i ] );
}
}
}
public void timeTrove3Get( int reps ) {
for( int r = 0; r < reps; r++ ) {
for( int i = 0; i < size; i++ ) {
trove3_populated_map.get( i );
}
}
}
public void timeTrove3ObjectGet( int reps ) {
for( int r = 0; r < reps; r++ ) {
for( int i = 0; i < size; i++ ) {
trove3_populated_obj_map.get( int_obj_array[ i ] );
}
}
}
/////////////////////////////////////////////////////
// containsKey
public void timeJavaContainsKey( int reps ) {
for( int r = 0; r < reps; r++ ) {
for( int i = 0; i < size; i++ ) {
java_populated_map.containsKey( int_obj_array[ i ] );
}
}
}
public void timeColtContainsKey( int reps ) {
for( int r = 0; r < reps; r++ ) {
for( int i = 0; i < size; i++ ) {
colt_populated_map.containsKey( i );
}
}
}
public void timeTrove2ContainsKey( int reps ) {
for( int r = 0; r < reps; r++ ) {
for( int i = 0; i < size; i++ ) {
trove2_populated_map.containsKey( i );
}
}
}
public void timeTrove2ObjectContainsKey( int reps ) {
for( int r = 0; r < reps; r++ ) {
for( int i = 0; i < size; i++ ) {
trove2_populated_obj_map.containsKey( int_obj_array[ i ] );
}
}
}
public void timeTrove3ContainsKey( int reps ) {
for( int r = 0; r < reps; r++ ) {
for( int i = 0; i < size; i++ ) {
trove3_populated_map.containsKey( i );
}
}
}
public void timeTrove3ObjectContainsKey( int reps ) {
for( int r = 0; r < reps; r++ ) {
for( int i = 0; i < size; i++ ) {
trove3_populated_obj_map.containsKey( int_obj_array[ i ] );
}
}
}
public static void main( String[] args ) throws Exception {
LibraryCompareBenchmark benchmark = new LibraryCompareBenchmark();
while( true ) {
benchmark.setUp();
benchmark.timeTrove3ObjectGet( 1000 );
benchmark.tearDown();
Thread.sleep( 1000 );
}
}
}