Mercurial > hg > Members > shoshi > AADS
diff src/test/MapBenchmark.java @ 0:a9cb12a7f995
hg init
author | misaka |
---|---|
date | Wed, 06 Jul 2011 15:19:52 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/test/MapBenchmark.java Wed Jul 06 15:19:52 2011 +0900 @@ -0,0 +1,67 @@ +package test; + +import java.util.LinkedList; +import java.util.List; +import java.util.Random; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import tree.*; + +public class MapBenchmark +{ + public static void main(String args[]) throws InterruptedException + { + int num = 20000; + int threads = 5; + ExecutorService service = Executors.newFixedThreadPool(threads); + + Map<Integer,Integer> map = new SynchronizedMap<Integer,Integer>(new AVLTreeMap<Integer,Integer>()); + //Map<Integer,Integer> map = Collections.synchronizedMap(new TreeMap<Integer,Integer>()); + + + LinkedList<Integer> keys[] = new LinkedList[threads]; + for(int i = 0;i < keys.length;i ++){ + Random rnd = new Random(); + keys[i] = new LinkedList<Integer>(); + for(int j = 0;j < num;j ++){ + keys[i].add(rnd.nextInt()); + } + } + + Task<Integer> tasks[] = new Task[threads]; + for(int i = 0;i < tasks.length;i ++){ + tasks[i] = new Task<Integer>(keys[i],map); + } + + for(int i = 0;i < tasks.length;i ++){ + service.execute(tasks[i]); + } + + service.shutdown(); + service.awaitTermination(Long.MAX_VALUE,TimeUnit.DAYS); + + System.out.println(""); + } + + public static class Task<K> implements Runnable + { + private Map<K,K> map; + private List<K> keys; + public Task(List<K> keys,Map<K,K> map) + { + this.keys = keys; + this.map = map; + } + + @Override + public void run() + { + long start = System.currentTimeMillis(); + for(K key : keys){ + map.put(key,key); + } + System.out.println(System.currentTimeMillis() - start); + } + } +}