diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/jvm/clojure/lang/ThreadLocalData.java | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/jvm/clojure/lang/ThreadLocalData.java b/src/jvm/clojure/lang/ThreadLocalData.java index 149d7296..b0f3d19e 100644 --- a/src/jvm/clojure/lang/ThreadLocalData.java +++ b/src/jvm/clojure/lang/ThreadLocalData.java @@ -34,4 +34,70 @@ static public void setTransaction(Transaction t){ transaction.set(t); } + +private static ThreadLocal<Integer> tltest = new ThreadLocal<Integer>(); +private static Integer test; +private static volatile int sum; +private static volatile Object fred; + +static public void main(String[] args){ + test = new Integer(17); + tltest.set(new Integer(17)); +// PersistentArrayIdentityMap testmap = PersistentArrayIdentityMap.EMPTY; +// testmap = (PersistentArrayIdentityMap) testmap.put(42, 42); +// testmap = (PersistentArrayIdentityMap) testmap.put(Thread.currentThread(), 17); + + IPersistentMap testmap = PersistentArrayIdentityMap.EMPTY; + testmap = testmap.put(Thread.currentThread(), 17); +// testmap = testmap.put(42, 42); +// testmap = testmap.put(43, 42); +// testmap = testmap.put(44, 42); +// testmap = testmap.put(45, 42); + + int n = Integer.parseInt(args[0]); + + long startTime = System.nanoTime(); + sum = 0; + for(int i=0;i<n;i++) + { + sum += test.intValue(); + } + + long estimatedTime = System.nanoTime() - startTime; + System.out.println("sum = " + sum + ", time: " + estimatedTime/1000000); + + startTime = System.nanoTime(); + sum = 0; + for(int i=0;i<n;i++) + { + sum += tltest.get().intValue(); + } + + estimatedTime = System.nanoTime() - startTime; + System.out.println("sum = " + sum + ", time: " + estimatedTime/1000000); + + startTime = System.nanoTime(); + sum = 0; + for(int i=0;i<n;i++) + { + sum += ((Integer)testmap.get(Thread.currentThread())).intValue(); + } + + estimatedTime = System.nanoTime() - startTime; + System.out.println("sum = " + sum + ", time: " + estimatedTime/1000000); + + startTime = System.nanoTime(); + sum = 0; + for(int i=0;i<n;i++) + { + if(fred != null) + sum += ((Integer)testmap.get(Thread.currentThread())).intValue(); + else + sum += test.intValue(); + } + + estimatedTime = System.nanoTime() - startTime; + System.out.println("sum = " + sum + ", time: " + estimatedTime/1000000); + +} } |