Created
October 11, 2015 19:55
-
-
Save NeatMonster/9633160ed6031e948e63 to your computer and use it in GitHub Desktop.
This file contains hidden or 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 fr.neatmonster.utils; | |
import java.util.Comparator; | |
import java.util.HashMap; | |
import java.util.Map; | |
import java.util.Map.Entry; | |
import java.util.Random; | |
import java.util.UUID; | |
import fr.lightoner.java.CustomTreeMap; | |
public class Main { | |
public static final Random rnd = new Random(); | |
public static void main(final String[] args) { | |
final HashMap<UUID, Integer> data = new HashMap<UUID, Integer>(); | |
for (int i = 0; i < 10000; ++i) | |
data.put(UUID.randomUUID(), rnd.nextInt(100)); | |
lightoner(data); | |
neatmonster(data); | |
} | |
public static void lightoner(final Map<UUID, Integer> data) { | |
System.out.println("# CustomTreeMap"); | |
// init | |
long time = System.currentTimeMillis(); | |
final CustomTreeMap<UUID, Integer> map = new CustomTreeMap<UUID, Integer>( | |
new Comparator<Entry<UUID, Integer>>() { | |
@Override | |
public int compare(Entry<UUID, Integer> entry1, | |
Entry<UUID, Integer> entry2) { | |
int diff = entry2.getValue() | |
.compareTo(entry1.getValue()); | |
if (diff == 0) | |
diff = entry1.getKey().toString() | |
.compareTo(entry2.getKey().toString()); | |
return diff; | |
} | |
}); | |
System.out.println( | |
"init: " + (System.currentTimeMillis() - time) + " ms"); | |
// put | |
time = System.currentTimeMillis(); | |
for (final Entry<UUID, Integer> datum : data.entrySet()) | |
map.put(datum.getKey(), rnd.nextInt(100)); // insert | |
for (final Entry<UUID, Integer> datum : data.entrySet()) | |
map.put(datum.getKey(), datum.getValue()); // replace | |
System.out | |
.println("put: " + (System.currentTimeMillis() - time) + " ms"); | |
// get | |
time = System.currentTimeMillis(); | |
for (final UUID key : data.keySet()) | |
map.getRank(key); // key exists | |
for (final UUID key : data.keySet()) | |
map.getRank(UUID.randomUUID()); // key doesn't exist | |
System.out | |
.println("get: " + (System.currentTimeMillis() - time) + " ms"); | |
// contains | |
time = System.currentTimeMillis(); | |
for (final UUID key : data.keySet()) | |
map.contains(key); // key exists | |
for (final UUID key : data.keySet()) | |
map.contains(UUID.randomUUID()); // key doesn't exist | |
System.out.println( | |
"contains: " + (System.currentTimeMillis() - time) + " ms"); | |
// remove | |
time = System.currentTimeMillis(); | |
for (final UUID key : data.keySet()) | |
map.remove(UUID.randomUUID()); // key doesn't exist | |
for (final UUID key : data.keySet()) | |
map.remove(key); // key exists | |
System.out.println( | |
"remove: " + (System.currentTimeMillis() - time) + " ms"); | |
} | |
public static void neatmonster(final Map<UUID, Integer> data) { | |
System.out.println("# ValueSortedMap"); | |
// init | |
long time = System.currentTimeMillis(); | |
final ValueSortedMap<UUID, Integer> map = new ValueSortedMap<UUID, Integer>(); | |
System.out.println( | |
"init: " + (System.currentTimeMillis() - time) + " ms"); | |
// put | |
time = System.currentTimeMillis(); | |
for (final Entry<UUID, Integer> datum : data.entrySet()) | |
map.put(datum.getKey(), rnd.nextInt(100)); // insert | |
for (final Entry<UUID, Integer> datum : data.entrySet()) | |
map.put(datum.getKey(), datum.getValue()); // replace | |
System.out | |
.println("put: " + (System.currentTimeMillis() - time) + " ms"); | |
// get | |
time = System.currentTimeMillis(); | |
for (final UUID key : data.keySet()) | |
map.get(key); // key exists | |
for (final UUID key : data.keySet()) | |
map.get(UUID.randomUUID()); // key doesn't exist | |
System.out | |
.println("get: " + (System.currentTimeMillis() - time) + " ms"); | |
// contains | |
time = System.currentTimeMillis(); | |
for (final UUID key : data.keySet()) | |
map.containsKey(key); // key exists | |
for (final UUID key : data.keySet()) | |
map.containsKey(UUID.randomUUID()); // key doesn't exist | |
System.out.println( | |
"contains: " + (System.currentTimeMillis() - time) + " ms"); | |
// remove | |
time = System.currentTimeMillis(); | |
for (final UUID key : data.keySet()) | |
map.remove(UUID.randomUUID()); // key doesn't exist | |
for (final UUID key : data.keySet()) | |
map.remove(key); // key exists | |
System.out.println( | |
"remove: " + (System.currentTimeMillis() - time) + " ms"); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment