blob: d5b619d9f689061b67727411597f887143656a7f [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 1998, 2013 Oracle and/or its affiliates. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* Oracle - initial API and implementation from Oracle TopLink
******************************************************************************/
package org.eclipse.persistence.testing.tests.performance.java;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import org.eclipse.persistence.testing.framework.*;
/**
* This test compares the performance between HashMap and Hashtable.
*/
public class MapTest extends PerformanceComparisonTestCase {
protected Object[] values;
protected int size;
public MapTest(int size) {
this.size = size;
setName("Hashtable vs Maps size " + size + " PerformanceComparisonTest");
setDescription("Compares the performance between HashMap and Hashtable.");
addHashtable2Test();
addHashMapTest();
addLinkedMapTest();
addIdentityHashMapTest();
addHashSetTest();
addConcurrentHashMapTest();
this.values = new Object[size];
for (int index = 0; index < size; index++) {
this.values[index] = new Object();
}
}
/**
* Hashtable.
*/
public void test() throws Exception {
Hashtable table = new Hashtable(10);
for (int index = 0; index < size; index++) {
table.put(values[index], values[index]);
}
for (int index = 0; index < size; index++) {
Object result = table.get(values[index]);
}
for (int index = 0; index < size; index++) {
Object result = table.remove(values[index]);
}
}
/**
* HashMap.
*/
public void addHashMapTest() {
PerformanceComparisonTestCase test = new PerformanceComparisonTestCase() {
public void test() {
Map map = new HashMap(10);
for (int index = 0; index < size; index++) {
map.put(values[index], values[index]);
}
for (int index = 0; index < size; index++) {
Object result = map.get(values[index]);
}
for (int index = 0; index < size; index++) {
Object result = map.remove(values[index]);
}
}
};
test.setName("HashMapTest");
addTest(test);
}
/**
* HashMap.
*/
public void addHashtable2Test() {
PerformanceComparisonTestCase test = new PerformanceComparisonTestCase() {
public void test() {
Map map = new Hashtable(10);
for (int index = 0; index < size; index++) {
map.put(values[index], values[index]);
}
for (int index = 0; index < size; index++) {
Object result = map.get(values[index]);
}
for (int index = 0; index < size; index++) {
Object result = map.remove(values[index]);
}
}
};
test.setName("Hashtable2Test");
addTest(test);
}
/**
* LinkedMap.
*/
public void addLinkedMapTest() {
PerformanceComparisonTestCase test = new PerformanceComparisonTestCase() {
public void test() {
Map map = new LinkedHashMap(10);
for (int index = 0; index < size; index++) {
map.put(values[index], values[index]);
}
for (int index = 0; index < size; index++) {
Object result = map.get(values[index]);
}
for (int index = 0; index < size; index++) {
Object result = map.remove(values[index]);
}
}
};
test.setName("LinkedMapTest");
test.setAllowableDecrease(-20);
addTest(test);
}
/**
* IdentityHashMap.
*/
public void addIdentityHashMapTest() {
PerformanceComparisonTestCase test = new PerformanceComparisonTestCase() {
public void test() {
Map map = new IdentityHashMap(10);
for (int index = 0; index < size; index++) {
map.put(values[index], values[index]);
}
for (int index = 0; index < size; index++) {
Object result = map.get(values[index]);
}
for (int index = 0; index < size; index++) {
Object result = map.remove(values[index]);
}
}
};
test.setName("IdentityHashMapTest");
test.setAllowableDecrease(-60);
addTest(test);
}
/**
* ConcurrentHashMap.
*/
public void addConcurrentHashMapTest() {
PerformanceComparisonTestCase test = new PerformanceComparisonTestCase() {
public void test() {
Map map = new ConcurrentHashMap(10);
for (int index = 0; index < size; index++) {
map.put(values[index], values[index]);
}
for (int index = 0; index < size; index++) {
Object result = map.get(values[index]);
}
for (int index = 0; index < size; index++) {
Object result = map.remove(values[index]);
}
}
};
test.setName("ConcurrentHashMapTest");
test.setAllowableDecrease(-5);
addTest(test);
}
/**
* HashSet.
*/
public void addHashSetTest() {
PerformanceComparisonTestCase test = new PerformanceComparisonTestCase() {
public void test() {
Set map = new HashSet(10);
for (int index = 0; index < size; index++) {
map.add(values[index]);
}
for (int index = 0; index < size; index++) {
boolean result = map.contains(values[index]);
}
for (int index = 0; index < size; index++) {
boolean result = map.remove(values[index]);
}
}
};
test.setName("HashSetTest");
test.setAllowableDecrease(0);
addTest(test);
}
}