Skip to content

Commit 433df90

Browse files
author
Sampada
authored
BAEL-3894: Added Performance Tests (eugenp#10213)
1 parent 3aed595 commit 433df90

File tree

2 files changed

+98
-0
lines changed

2 files changed

+98
-0
lines changed

libraries-6/src/test/java/com/baeldung/apache/commons/CollectionsUnitTest.java

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@
77
import java.util.ArrayList;
88
import java.util.Arrays;
99
import java.util.List;
10+
import java.util.concurrent.TimeUnit;
1011

1112
import org.apache.commons.collections4.BidiMap;
1213
import org.apache.commons.collections4.MultiValuedMap;
14+
import org.apache.commons.collections4.bidimap.DualHashBidiMap;
15+
import org.apache.commons.collections4.bidimap.DualTreeBidiMap;
1316
import org.apache.commons.collections4.bidimap.TreeBidiMap;
1417
import org.apache.commons.collections4.map.MultiKeyMap;
1518
import org.apache.commons.collections4.multimap.ArrayListValuedHashMap;
@@ -20,6 +23,7 @@ public class CollectionsUnitTest {
2023
private final static MultiValuedMap<String, String> groceryCart = new ArrayListValuedHashMap<>();
2124
private final static MultiKeyMap<String, String> days = new MultiKeyMap<String, String>();
2225
private final static MultiKeyMap<String, String> cityCoordinates = new MultiKeyMap<String, String>();
26+
private long start;
2327

2428
static {
2529
daysOfWeek.put(1, "Monday");
@@ -106,4 +110,73 @@ public void givenCoordinatesMultiKeyMap_whenQueried_thenOK() {
106110

107111
}
108112

113+
@Test
114+
public void givenTreeBidiMap_whenHundredThousandKeys_thenPerformanceNoted() {
115+
System.out.println("**TreeBidiMap**");
116+
BidiMap<Integer, Integer> map = new TreeBidiMap<>();
117+
start = System.nanoTime();
118+
for (int i = 0; i < 100000; i++) {
119+
Integer key = new Integer(i);
120+
Integer value = new Integer(i + 1);
121+
map.put(key, value);
122+
}
123+
System.out.println("Insertion time:" + TimeUnit.MILLISECONDS.convert(System.nanoTime() - start, TimeUnit.NANOSECONDS));
124+
125+
start = System.nanoTime();
126+
Integer value = (Integer) map.get(new Integer(500));
127+
System.out.println("Value:" + value);
128+
System.out.println("Fetch time key:" + TimeUnit.MICROSECONDS.convert(System.nanoTime() - start, TimeUnit.NANOSECONDS));
129+
130+
start = System.nanoTime();
131+
Integer key = (Integer) map.getKey(new Integer(501));
132+
System.out.println("Key:" + key);
133+
System.out.println("Fetch time value:" + TimeUnit.MICROSECONDS.convert(System.nanoTime() - start, TimeUnit.NANOSECONDS));
134+
}
135+
136+
@Test
137+
public void givenDualTreeBidiMap_whenHundredThousandKeys_thenPerformanceNoted() {
138+
System.out.println("**DualTreeBidiMap**");
139+
BidiMap<Integer, Integer> map = new DualTreeBidiMap<>();
140+
start = System.nanoTime();
141+
for (int i = 0; i < 100000; i++) {
142+
Integer key = new Integer(i);
143+
Integer value = new Integer(i + 1);
144+
map.put(key, value);
145+
}
146+
System.out.println("Insertion time:" + TimeUnit.MILLISECONDS.convert(System.nanoTime() - start, TimeUnit.NANOSECONDS));
147+
148+
start = System.nanoTime();
149+
Integer value = (Integer) map.get(new Integer(500));
150+
System.out.println("Value:" + value);
151+
System.out.println("Fetch time key:" + TimeUnit.MICROSECONDS.convert(System.nanoTime() - start, TimeUnit.NANOSECONDS));
152+
153+
start = System.nanoTime();
154+
Integer key = (Integer) map.getKey(new Integer(501));
155+
System.out.println("Key:" + key);
156+
System.out.println("Fetch time value:" + TimeUnit.MICROSECONDS.convert(System.nanoTime() - start, TimeUnit.NANOSECONDS));
157+
}
158+
159+
@Test
160+
public void givenDualHashBidiMap_whenHundredThousandKeys_thenPerformanceNoted() {
161+
System.out.println("**DualHashBidiMap**");
162+
BidiMap<Integer, Integer> map = new DualHashBidiMap<>();
163+
start = System.nanoTime();
164+
for (int i = 0; i < 100000; i++) {
165+
Integer key = new Integer(i);
166+
Integer value = new Integer(i + 1);
167+
map.put(key, value);
168+
}
169+
System.out.println("Insertion time:" + TimeUnit.MILLISECONDS.convert(System.nanoTime() - start, TimeUnit.NANOSECONDS));
170+
171+
start = System.nanoTime();
172+
Integer value = (Integer) map.get(new Integer(500));
173+
System.out.println("Value:" + value);
174+
System.out.println("Fetch time key:" + TimeUnit.MICROSECONDS.convert(System.nanoTime() - start, TimeUnit.NANOSECONDS));
175+
176+
start = System.nanoTime();
177+
Integer key = (Integer) map.getKey(new Integer(501));
178+
System.out.println("Key:" + key);
179+
System.out.println("Fetch time value:" + TimeUnit.MICROSECONDS.convert(System.nanoTime() - start, TimeUnit.NANOSECONDS));
180+
}
181+
109182
}

libraries-6/src/test/java/com/baeldung/guava/GuavaUnitTest.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import java.util.Arrays;
88
import java.util.List;
9+
import java.util.concurrent.TimeUnit;
910

1011
import org.junit.Test;
1112

@@ -21,6 +22,7 @@ public class GuavaUnitTest {
2122
private final static Multimap<String, String> groceryCart = ArrayListMultimap.create();
2223
private final static Table<String, String, String> cityCoordinates = HashBasedTable.create();
2324
private final static Table<String, String, String> movies = HashBasedTable.create();
25+
private long start;
2426

2527
static {
2628
daysOfWeek.put(1, "Monday");
@@ -115,4 +117,27 @@ public void givenMoviesTable_whenFetched_thenOK() {
115117
assertTrue(movies.containsValue("Speed"));
116118

117119
}
120+
121+
@Test
122+
public void givenHashBiMap_whenHundredThousandKeys_thenPerformanceNoted() {
123+
BiMap<Integer, Integer> map = HashBiMap.create();
124+
start = System.nanoTime();
125+
for (int i = 0; i < 100000; i++) {
126+
Integer key = new Integer(i);
127+
Integer value = new Integer(i + 1);
128+
map.put(key, value);
129+
}
130+
System.out.println("Insertion time:" + TimeUnit.MILLISECONDS.convert(System.nanoTime() - start, TimeUnit.NANOSECONDS));
131+
132+
start = System.nanoTime();
133+
Integer value = map.get(new Integer(500));
134+
System.out.println("Value:" + value);
135+
System.out.println("Fetch time key:" + TimeUnit.MICROSECONDS.convert(System.nanoTime() - start, TimeUnit.NANOSECONDS));
136+
137+
start = System.nanoTime();
138+
Integer key = map.inverse()
139+
.get(new Integer(501));
140+
System.out.println("Key:" + key);
141+
System.out.println("Fetch time value:" + TimeUnit.MICROSECONDS.convert(System.nanoTime() - start, TimeUnit.NANOSECONDS));
142+
}
118143
}

0 commit comments

Comments
 (0)