32package com.jogamp.common.util;
34import java.io.IOException;
35import java.util.Iterator;
36import java.util.HashMap;
37import java.util.Map.Entry;
39import org.junit.BeforeClass;
42import com.jogamp.common.os.Clock;
43import com.jogamp.common.os.Platform;
44import com.jogamp.junit.util.SingletonJunitCase;
46import static org.junit.Assert.*;
47import static java.lang.System.*;
54import org.junit.FixMethodOrder;
55import org.junit.runners.MethodSorters;
57@FixMethodOrder(MethodSorters.NAME_ASCENDING)
60 private static int iterations;
64 public static void init() {
76 final HashMap<Long, Integer> map =
new HashMap<Long, Integer>();
79 for (
int i = 0; i < iterations; i++) {
86 for (
int i = 0; i < iterations; i++) {
90 assertEquals(map.size(), intmap.size());
92 for (
final Entry<Long, Integer> entry : map.entrySet()) {
98 for (
final Entry<Long, Integer> entry : map.entrySet()) {
99 assertEquals((
int)entry.getValue(), intmap.
remove(entry.getKey()));
100 assertEquals(map.size() - i - 1, intmap.size());
111 for (
int i = 0; i < iterations; i++) {
116 assertNotNull(iterator);
117 assertTrue(iterator.hasNext());
120 while (iterator.hasNext()) {
121 final LongIntHashMap.Entry entry = iterator.next();
122 assertNotNull(entry);
125 assertEquals(map.size(), n);
137 void benchmark(
final boolean warmup) {
141 final HashMap<Long, Integer> map =
new HashMap<Long, Integer>(1024);
143 out.println(intmap.getClass().getName()+
" vs "+map.getClass().getName()+
144 " warmup: " + warmup);
148 for (
int i = 0; i < iterations; i++) {
151 final long intmapPutTime = (Clock.currentNanos() - time);
152 out.println(
" iimap: " + intmapPutTime/1000000.0f+
"ms");
155 time = Clock.currentNanos();
156 for (
int i = 0; i < iterations; i++) {
159 final long mapPutTime = (Clock.currentNanos() - time);
160 out.println(
" map: " + mapPutTime/1000000.0f+
"ms");
163 System.out.println();
164 System.out.println(
"get");
165 time = Clock.currentNanos();
166 for (
int i = 0; i < iterations; i++) {
169 final long intmapGetTime = (Clock.currentNanos() - time);
170 out.println(
" iimap: " + intmapGetTime/1000000.0f+
"ms");
172 time = Clock.currentNanos();
173 for (
int i = 0; i < iterations; i++) {
174 map.get(pairs.
keys[i]);
176 final long mapGetTime = (Clock.currentNanos() - time);
177 out.println(
" map: " + mapGetTime/1000000.0f+
"ms");
181 out.println(
"remove");
182 time = Clock.currentNanos();
183 for (
int i = 0; i < iterations; i++) {
186 assertEquals(0, intmap.size());
187 final long intmapRemoveTime = (Clock.currentNanos() - time);
188 out.println(
" iimap: " + intmapRemoveTime/1000000.0f+
"ms");
190 time = Clock.currentNanos();
191 for (
int i = 0; i < iterations; i++) {
192 map.remove(pairs.
keys[i]);
194 assertEquals(0, map.size());
195 final long mapRemoveTime = (Clock.currentNanos() - time);
196 out.println(
" map: " + mapRemoveTime/1000000.0f+
"ms");
203 assertTrue(
"'get' too slow", intmapGetTime <= mapGetTime + mapGetTime/2 );
204 assertTrue(
"'remove' too slow", intmapRemoveTime <= mapRemoveTime + mapRemoveTime/2 );
208 public static void main(
final String args[])
throws IOException {
static native long currentNanos()
Returns current monotonic nanoseconds since start of this application.
An entry mapping a key to a value.
Fast HashMap for primitive data.
int get(final long key)
Returns the value to which the specified key is mapped, or getKeyNotFoundValue if this map contains n...
boolean containsKey(final long key)
Iterator< Entry > iterator()
Returns a new Iterator.
boolean containsValue(final int value)
int remove(final long key)
Removes the key-value mapping from this map.
int put(final long key, final int value)
Maps the key to the specified value.
void testPutRemove()
Test of put method, of class LongIntHashMap.
static void main(final String args[])