Skip to content

Instantly share code, notes, and snippets.

@NeatMonster
Created October 11, 2015 19:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save NeatMonster/9633160ed6031e948e63 to your computer and use it in GitHub Desktop.
Save NeatMonster/9633160ed6031e948e63 to your computer and use it in GitHub Desktop.
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