summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/jvm/clojure/lang/ThreadLocalData.java66
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);
+
+}
}