diff options
author | Rich Hickey <richhickey@gmail.com> | 2008-12-13 19:25:10 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2008-12-13 19:25:10 +0000 |
commit | 044419862707c9a540b8e42faad0f69bc66fe1fd (patch) | |
tree | 512b15b4ea91c09f9b39156213db39db8da892c0 /src/jvm/clojure | |
parent | f95175264df36c3d8fe2113aa9af92cda0f2f5c8 (diff) |
proxy perf tweaks
Note breaking change if you are using the proxy interface other than the proxy macro itself - proxy maps are now maps of (preferably interned) strings to fns, not symbols to fns, and if you construct a proxy manually you must establish initial map with init-proxy
Diffstat (limited to 'src/jvm/clojure')
-rw-r--r-- | src/jvm/clojure/lang/IProxy.java | 5 | ||||
-rw-r--r-- | src/jvm/clojure/lang/PersistentArrayMap.java | 2 | ||||
-rw-r--r-- | src/jvm/clojure/lang/RT.java | 4 |
3 files changed, 7 insertions, 4 deletions
diff --git a/src/jvm/clojure/lang/IProxy.java b/src/jvm/clojure/lang/IProxy.java index 7f3630f9..c32521a7 100644 --- a/src/jvm/clojure/lang/IProxy.java +++ b/src/jvm/clojure/lang/IProxy.java @@ -14,7 +14,8 @@ package clojure.lang; public interface IProxy{ -public void __updateClojureFnMappings(IPersistentMap m); -public IPersistentMap __getClojureFnMappings(); + public void __initClojureFnMappings(IPersistentMap m); + public void __updateClojureFnMappings(IPersistentMap m); + public IPersistentMap __getClojureFnMappings(); } diff --git a/src/jvm/clojure/lang/PersistentArrayMap.java b/src/jvm/clojure/lang/PersistentArrayMap.java index 070fe1bf..009b1fe8 100644 --- a/src/jvm/clojure/lang/PersistentArrayMap.java +++ b/src/jvm/clojure/lang/PersistentArrayMap.java @@ -27,7 +27,7 @@ import java.util.Map; public class PersistentArrayMap extends APersistentMap{
final Object[] array;
-static final int HASHTABLE_THRESHOLD = 8;
+static final int HASHTABLE_THRESHOLD = 16;
public static final PersistentArrayMap EMPTY = new PersistentArrayMap();
diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java index ae18bfce..7a31bbdf 100644 --- a/src/jvm/clojure/lang/RT.java +++ b/src/jvm/clojure/lang/RT.java @@ -966,7 +966,9 @@ static public double doubleCast(double x){ } static public IPersistentMap map(Object... init){ - if(init != null && init.length == 2) + if(init == null) + return PersistentArrayMap.EMPTY; + else if(init.length <= PersistentArrayMap.HASHTABLE_THRESHOLD) return new PersistentArrayMap(init); return PersistentHashMap.create(init); } |