From 1c853081e8e0f3255c84cb0d0afb0e11475ad390 Mon Sep 17 00:00:00 2001 From: Ambrose Bonnaire-Sergeant Date: Fri, 23 Aug 2024 13:37:50 -0500 Subject: [PATCH] remove optimized kw maps --- README.md | 155 +-------- java/com/ambrosebs/fast_attr/BitOps.java | 11 - paper/bibliography.bib | 8 +- paper/paper.pdf | Bin 196486 -> 179445 bytes paper/paper.tex | 307 ++---------------- src/com/ambrosebs/fast_attr.clj | 394 ----------------------- 6 files changed, 26 insertions(+), 849 deletions(-) delete mode 100644 java/com/ambrosebs/fast_attr/BitOps.java delete mode 100644 src/com/ambrosebs/fast_attr.clj diff --git a/README.md b/README.md index e9866d6..5d2edcf 100644 --- a/README.md +++ b/README.md @@ -2,26 +2,17 @@

-## Hash Array Mapped Tries +## An Interactive Tutorial on Hash Array Mapped Tries This library contains: - a [reimplementation](#persistenthashmap-port) of Clojure's PersistentHashMap in Clojure - [visualization tools](#visualizing-hamts) for the underlying trie. -- a [draft paper](#paper) that gives a from-scratch tutorial - on hash array mapped tries. -- a [prototype](#keyword-map-optimizations) for dynamically generated `defrecord`s - based on runtime key frequency. - -It was completed as part of the B503 Algorithms graduate course -at Indiana University Bloomington (Fall 2016). -It was also just a great excuse to learn all this stuff. +- a [tutorial paper](#paper) on hash array mapped tries. ## Paper -The accompanying [paper](paper/paper.pdf) gives a tutorial on HAMT's, -and outlines other details are required by my course which are less -useful for the casual reader. +The accompanying [paper](paper/paper.pdf) gives a tutorial on HAMT's. ## PersistentHashMap port @@ -165,146 +156,6 @@ the same first 10 bits in their hashes. A level 2 node is used to disambiguate them at hash bits 10-14. -## Keyword map optimizations - -I experimented with a cool little idea: generating `defrecord`s -at runtime. -The finished product wasn't too successful, but there seems -to be more to be said in this area. - -A prototype is implemented in `com.ambrosebs.fast-attr`. -It is not a complete map implementation, but enough to run -a couple of benchmarks. - -There are two main classes: - -- `UncachedMap`: a wrapper for `PersistentHashMap` that - also remembers the keyword keys. If a specialized - map for the current keyword keys set exists, then - it is coerces into a `CachedMap*` on the next `assoc` - operation. -- `CachedMap*`: a family of record-like datatypes that - offer a fast lookup on a fixed set of keys like `defrecord`. - We compile many different variants for each common - keyset (eg. `CachedMap1`, `CachedMap542`). - On `assoc`, if there is a specialized `CachedMap*` available, - it coerces to it, otherwise it defaults back to an - `UncachedMap`. - -A separate thread performs the actual compilation, to avoid -too much overhead during `assoc`. -(Below) - -```clojure -(let [actually-me current-thread] - (.start - (Thread. - (fn [] - (loop [] - (Thread/sleep 100) - ;; kill the thread if we recompile - (when (= actually-me current-thread) - (doseq [[k v] @keys-frequencies] - (when (< gen-threshold v) - (generate-fast-kw-map k))) - (recur))))))) -``` - -Map `assoc` operations simply write to `keys-frequencies`, -incrementing a counter for the frequency of a given keyset. -If a keyset occurs more than `gen-threshold` times (set to 16), -a specialized `CachedMap*` is generated for the current keyset. - -Since the optimizations happen on an `assoc` operation, a little -benchmark to show off the implementation is given that performs -20 assoc operations, with 100,000 lookups between each assoc. -(Below) - -```clojure -(defn exercise-bench [f n] - (loop [i 20 - m (f (into {:a 1 :b 2 :c 3 :d 4 - :e 5 :f 6 :g 7 :h 8} - (map #(vector % %) (range n))))] - (when-not (zero? i) - (dotimes [_ 100000] - (+ (:a m) (:b m) (:c m) (:d m) - (:e m) (:f m) (:g m) (:h m))) - (recur (dec i) (update m :a inc))))) -``` - -The benchmark always runs with a fixed map -`{:a 1 :b 2 :c 3 :d 4 :e 5 :f 6 :g 7 :h 8}`. -The `n` parameter with generate `n` extra entries, -designed to fill up the HAMT to show better performance -in the specialized versions. - -We first test with zero extra keys. -For plain maps: - -```clojure -user=> (time (fast/exercise-bench #(into {} %) 0)) -"Elapsed time: 918.679767 msecs" -nil -``` - -For hand rolled `defrecords`: - -```clojure -user=> (defrecord Exercise [a b c d e f g h]) -user.Exercise -user=> (time (fast/exercise-bench map->Exercise 0)) -"Elapsed time: 788.005321 msecs" -nil -``` - -For optimized maps: - -```clojure -user=> (time (fast/exercise-bench fast/uncached-1arg 0)) -"use optimised map" -"Elapsed time: 901.342483 msecs" -nil -user=> (time (fast/exercise-bench fast/uncached-1arg 0)) -"use optimised map" -"Elapsed time: 785.89559 msecs" -``` - -The optimization takes a while to kick in, but seem to -show similar speedups as records. - -For 1,000 extra keys, things are still looking ok for the -optimized map, which keeps up with records. - -```clojure -user=> (time (fast/exercise-bench #(into {} %) 1000)) -"Elapsed time: 1375.165084 msecs" -nil -user=> (time (fast/exercise-bench map->Exercise 1000)) -"Elapsed time: 766.720069 msecs" -nil -user=> (time (fast/exercise-bench fast/uncached-1arg 1000)) -"use optimised map" -"Elapsed time: 773.391029 msecs" -nil -user=> -``` - -## Future work - -It would be nice if the HAMT implementation in `com.ambrosebs.map` -could be swapped in as the default persistent map implementation -in Clojure. There is some preliminary work in `com.ambrosebs.map/install-map`, -but there's some stuff hardcoded in Compiler.java which is getting -in the way. - -Then, transferring optimizations such as the one I experimented with -into a full implementation like `com.ambrosebs.map.PersistentHashMap` -would allow us to test on large programs that extensively -use plain maps as records (eg. tools.analyzer). - -Enjoy! - ## License Copyright © 2016-2024 Ambrose Bonnaire-Sergeant diff --git a/java/com/ambrosebs/fast_attr/BitOps.java b/java/com/ambrosebs/fast_attr/BitOps.java deleted file mode 100644 index f1d562a..0000000 --- a/java/com/ambrosebs/fast_attr/BitOps.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.ambrosebs.fast_attr; - - -public class BitOps { - static public int unsignedShiftRightInt(int x, int n){ - return x >>> n; - } - static public int bitShiftLeftInt(int x, int n){ - return x << n; - } -} diff --git a/paper/bibliography.bib b/paper/bibliography.bib index 6413e07..a9a1455 100644 --- a/paper/bibliography.bib +++ b/paper/bibliography.bib @@ -2,7 +2,7 @@ @online{HyperionBlog1 author = {Jean Niklas L'orange}, title = {Understanding Clojure's Persistent Vectors, pt. 1}, year = 2016, - url = {http://hypirion.com/musings/understanding-persistent-vector-pt-1}, + url = {https://hypirion.com/musings/understanding-persistent-vector-pt-1}, urldate = {2016-10-20} } @@ -27,7 +27,7 @@ @inproceedings{Steindorfer:2015:OHM:2814270.2814312 location = {Pittsburgh, PA, USA}, pages = {783--800}, numpages = {18}, - url = {http://doi.acm.org/10.1145/2814270.2814312}, + url = {https://doi.acm.org/10.1145/2814270.2814312}, doi = {10.1145/2814270.2814312}, acmid = {2814312}, publisher = {ACM}, @@ -51,7 +51,7 @@ @inproceedings{Steindorfer:2016:TSP:2993236.2993251 location = {Amsterdam, Netherlands}, pages = {168--172}, numpages = {5}, - url = {http://doi.acm.org/10.1145/2993236.2993251}, + url = {https://doi.acm.org/10.1145/2993236.2993251}, doi = {10.1145/2993236.2993251}, acmid = {2993251}, publisher = {ACM}, @@ -69,7 +69,7 @@ @inproceedings{bonnaire2016practical } @inproceedings{hickey2008clojure, - title={The clojure programming language}, + title={The Clojure programming language}, author={Hickey, Rich}, booktitle={Proceedings of the 2008 symposium on Dynamic languages}, pages={1}, diff --git a/paper/paper.pdf b/paper/paper.pdf index 9617e7e1b1a14492541757a269a6a5ff7b7bc57b..005ed298d0c1178eccbac1fb50014fcd54ebe97a 100644 GIT binary patch delta 81220 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 z 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 {H?1>c5WQfNH6&taItfq_bKeLf$1PfB< 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. - \begin{verbatim} // returns integer between 0 and 31 int mask(int hash, int shift) { @@ -753,6 +738,16 @@ \subsection{Understanding the bit operations} we can then use to count the number of 1's below \texttt{bit} in \texttt{bitmap}. +\begin{figure*} +\includegraphics[width=18cm]{big-tree} +\caption{ +Visualization of +\texttt{\{:a 1 :b 2 :c 3 :d 4 :e 5 :f 6 :g 7 :h 8 :i 9 :j 10\}}, +hashes in Appendix~\ref{hash-examples}. +} +\label{big-trie-vis} +\end{figure*} + \subsection{Memory layout} The HAMT data structure has a very compact representation @@ -915,8 +910,7 @@ \subsection{Memory layout} \subsection{Search} -Search is straightforward, and works as described -in Section~\ref{walkthrough}. +Search is straightforward and similar to Section~\ref{walkthrough}. \subsection{Insertion} @@ -1029,221 +1023,6 @@ \subsection{Visualization} See Figure~\ref{big-trie-vis} for an example for a representative trie. -\section{Experiments} -\label{experiments} - -We prototyped an optimization based on -\empty{just-in-time compilation} techniques. -Leveraging Clojure's \texttt{case} statement, -we created specialized hash array mapped tries -for specific keysets. -We decide which keysets based on runtime frequency. - -Maps with keyword keys are very common in Clojure. -A type system for Clojure has special support -for such maps~\cite{bonnaire2016practical} -and the \texttt{clojure.spec} library\footnote{\url{http://clojure.org/guides/spec}} -has exposes special primitives to generate and verify -such maps. - -%\begin{figure} -%\begin{verbatim} -%(assoc [this key val] -% (cond -% (keyword? key) -% (case key -% ... ;; specific branches for each key -% ;; default case -% ) -% -% :else -%\end{verbatim} -%\caption{Pseudocode for \texttt{assoc} in optimized maps} -%\end{figure} -% -%\begin{figure} -%\begin{verbatim} -%(get [this key] -% (cond -% (keyword? key) -% (case key -% ... ;; specific branches for each key -% ;; default case -% ) -% -% :else -%\end{verbatim} -%\caption{Pseudocode for \texttt{get} in optimized maps} -%\end{figure} - -\begin{figure*} -\includegraphics[width=18cm]{big-tree} -\caption{ -Trie visualization in Clojure port, for map -\texttt{\{:a 1 :b 2 :c 3 :d 4 :e 5 :f 6 :g 7 :h 8 :i 9 :j 10\}} -(See Appendix~\ref{hash-examples} for corresponding hashes). -} -\label{big-trie-vis} -\end{figure*} - -\begin{figure} - \begin{tikzpicture} - \begin{axis}[ - legend pos=north west, - xlabel=Number of Extra keys, - ylabel=Time (msec)] - \addplot+[sharp plot] coordinates - {(0,837.900884) (100,1435.768863) (200,1447.167303) (300,1505.881845) (400,1331.124945) - (500,1759.42348 8) (600,1387.997231) (700,1729.756068) (800,1784.948714) (900,1481.740526) - (1000,1521.329677) (1100,1855.281003) (1200,2573.8774) (1300,2049.42444) (1400,1817.21074) - (1500,2023.47916) (1600,1936.875666) (1700,2129.781288) (1800,1757.819692) (1900,2973.424349)}; - \addlegendentry{Plain map} - \addplot+[sharp plot] coordinates -{ -(0,840.862397) (100,894.77844) (200,921.830137) (300,904.195596) (400,868.788413) -(500,849.688625) (600,857.498675) (700,884.393927) (800,1099.811693) (900,936.40417) -(1000,1079.314484) (1100,1598.098832) (1200,1334.392182) (1300,1212.918047) (1400,1047.268085) -(1500,1110.733413) (1600,1232.646281) (1700,1181.103518) (1800,1400.642201) (1900,2108.923538) -}; - \addlegendentry{Record} - \addplot+[sharp plot] coordinates -{ -(0,892.363186) (100,972.581187) (200,921.286823) (300,944.139623) (400,850.684909) -(500,907.794038) (600,835.013332) (700,841.138563) (800,938.415172) (900,960.614487) - (1000,904.91121) (1100,1569.635548) (1200,1294.22056) (1300,1047.200465) (1400,1112.890638) - (1500,1203.444674) (1600,1261.062708) (1700,2109.647289) (1800,3016.390694) (1900,3844.42986) -}; - \addlegendentry{Optimized map} - \end{axis} - \end{tikzpicture} - \caption{Running time for keyword keys benchmark, - varying the number of extra entries in the map.} - \label{bench-plot} -\end{figure} - - -\subsection{Approach} - -To prototype this approach, we repurposed Clojure's -\texttt{defrecord} construct, which creates maps -specialized maps on a known keyset. -Instead of statically compiling only known keysets, -our approach effectively compiles records at runtime -based the most frequent keyword keysets for that -particular run. - -\subsection{Evaluation} - -To evaluate our approach, we developed a prototype -that is a simple wrapper around the existing \texttt{PersistentHashMap} -class that intercepts operations on keyword keys. - -To minimize the overhead of compiling new classes, we -delegate compilation to a separate thread of execution, -using shared data to communicate which keysets to -specialize. - -We tested three kinds of maps in our benchmark. - -\paragraph{Plain map} -This is the Clojure implementation of hash array mapped trie -described in Section~\ref{clojure-hamt}. - -\paragraph{Record} -This is a map constructed with Clojure's \texttt{defrecord} -form. It is specialized at compile time for a specific -known set of keyword entries. - -\paragraph{Optimized map} -This is our prototype implementation that specializes -maps at runtime. - -\begin{figure} -\begin{verbatim} -(defn exercise-bench [f n] - (loop [i 20 - m (f (into {:a 1 :b 2 :c 3 :d 4 - :e 5 :f 6 :g 7 :h 8} - (map #(vector % %) (range n))))] - (when-not (zero? i) - (dotimes [_ 100000] - (+ (:a m) (:b m) (:c m) (:d m) - (:e m) (:f m) (:g m) (:h m))) - (recur (dec i) (update m :a inc))))) -\end{verbatim} -\caption{Benchmark code that takes a function $f$ -that returns the kind of map we are currently -benchmarking (eg., plain, record, or optimized), -and a number $n$, the number of extra keys to fill -the map with. -} -\label{benchmark-code} -\end{figure} - -Figure~\ref{benchmark-code} contains the benchmark -code. The purpose of the benchmark is to simulate -a set of map associations followed by many lookups, -since our optimization only triggers after an association -operation. -In this version of the benchmark, we perform 20 -associations, each with 400,000 lookups -on keyword entries. -Each iteration has a set number of keyword entries, -and we vary the - -\subsection{Results} - -Figure~\ref{bench-plot} plots the results. -The \emph{Record} is hand-optimized for the particular -keyword entries in the benchmark, and outperforms -the \emph{Plain map} as expected. -Our \emph{Optimized map} compiles its own specialized -map for the set of keywords, and consistently -beats \emph{Plain map} for 1,500 extra keys and under. -It also stays competitive with the hand-tuned \emph{Record} -for 1,500 and under. - -After 1,500 keys, there is an unknown problem with our optimized -implementation. Our hand-written benchmarking scheme -does not compensate for garbage collection and is rather crude, -so we would like to revisit this benchmark in the future to -investigate this issue. - -\subsection{Interpretation} - -Our optimization stays mostly competitive with hand-tuned -records. However, there are no wins in our predicted -primary use-case: small maps with only keyword keys. -Our benchmark tested an unusual case: keyword lookups on a -hybrid keyword and integer keyed map. -We constructed it like this to ensure our implementation beat -plain maps in expected cases. - -We hope our approach can be improved to cater to our -original vision of speeding up small keyword maps---our -initial experiments show no speedup in this case. - -%\begin{verbatim} -%- try associating a number with keywords -%- try generating defrecord classes for keyword -% maps -%- try splitting keywords and other data into two -% trees -%- combine RB trees/something else with other maps? -% - then branch on every `get` if something is a keyword, -% use the tree optimised for keywords, otherwise use the -% normal thing. -%- try compiling a `case` statement for all the -% keywords -% - try doing asynchronously -% - then set mutable field to utilize the thunk -% - while it's compiling, use a PHM in the mean time -%- keep a set of the most common clusters of keyword parameters -% - a separate thread compiles defrecords for them -% - then when these maps are created/assoc'd/dissoc'd, -% they can directly use the defrecords -%\end{verbatim} - \section{Related Work} Recently, Steindorfer and Vinju~\cite{Steindorfer:2015:OHM:2814270.2814312} @@ -1251,14 +1030,6 @@ \section{Related Work} They are interested in creating a product line of HAMT implementations~\cite{Steindorfer:2016:TSP:2993236.2993251}. -Our approach to speeding up the hash-map implementation -is related to \textit{storage strategies} -by Bolz et. al~\cite{Bolz13storagestrategies}. -They observe that dynamically typed languages often use -heterogeneous collections as homogeneous, and present -optimizations to take advantage of this fact. - - %\begin{verbatim} %- history of persistent data structures % - Bagwell, Hickey, Okasaki @@ -1270,48 +1041,8 @@ \section{Related Work} %- Scala's data structures? %\end{verbatim} -\section{Future directions} - -In future work, we plan to devise several benchmarks -that test real-world usages of small keyword maps. -We will devise several more optimization strategies -based on the optimization described in Section~\ref{experiments}, -and evaluate them using these new benchmarks. - -Furthermore, we plan to override Clojure's default hash map implementation -in a custom version of Clojure, and run benchmarks -over entire programs. -We plan to find programs that extensively use the ``tagged map'' -idiom of using plain maps as records---we conjecture these -are more likely to see speedups if our optimizations -satisfy the micro-benchmarks. - -\section{Conclusion} - -%\begin{verbatim} -%- summarise the problem -%- recap the history of Clojure's decisions on data structures -%- summarise the results of our experiments. -%- recommendations -%\end{verbatim} - -Clojure has a general purpose hash-map implementation, but -programmers are encouraged to hash-maps primarily as records, -which are typically small maps with less than 32 entries -with only keyword keys. - -In this paper, we prototyped an optimization that caters -to this usecase, by compiling specialized hash-maps -for specific keyword keysets discovered at runtime. -Our preliminary investigation found we could duplicate -performance for hand-tuned records with hybrid keyword and -integer keyed maps. -In the future, we plan to investigate optimizations -and benchmarks that better target small keyword maps. - \section{Dedication} This paper is dedicated to the memory of Phil Bagwell. -Thank you for sharing your gifts. \printbibliography[title=References] diff --git a/src/com/ambrosebs/fast_attr.clj b/src/com/ambrosebs/fast_attr.clj deleted file mode 100644 index e715e6a..0000000 --- a/src/com/ambrosebs/fast_attr.clj +++ /dev/null @@ -1,394 +0,0 @@ -(ns com.ambrosebs.fast-attr - (:use criterium.core) - (:require [potemkin :refer [def-map-type unify-gensyms]] - [clojure.pprint :refer [pprint]])) - -(defrecord A [a]) - -; (Map (Set Kw) [(Vec Kw) Map (U nil Map) -> Map]) -(def map-ctor-cache - (atom {})) - -; (Atom (Map (Set Kw) Int)) -;; number of times a particular keyset is looked up -(def keys-frequencies - (atom {})) - -(defn has-cached-class [kws] - (@map-ctor-cache kws)) - -(def ^:const gen-threshold 16) - -(declare generate-fast-kw-map) - -(def current-thread (gensym)) - -(let [actually-me current-thread] - (.start - (Thread. - (fn [] - (loop [] - (Thread/sleep 100) - ;; kill the thread if we recompile - (when (= actually-me current-thread) - (doseq [[k v] @keys-frequencies] - (when (< gen-threshold v) - (generate-fast-kw-map k))) - (recur))))))) - -(defn get-occured! [kws] - {:pre [(set? kws)]} - (swap! keys-frequencies update kws (fnil inc 0))) - -(defn assoc-occured! [kws] - {:pre [(set? kws)]} - (swap! keys-frequencies update kws (fnil inc 0))) - -(defn quoted-cached-map-fn [kws] - {:pre [(set? kws)]} - (let [kws-sorted (sort kws) - munge-kws (mapv (fn [k] - (symbol - (munge - (str "__KW__" - (namespace k) - (name k))))) - kws-sorted) - cls-nme (gensym "CachedMap") - kw-set (set kws) - kw-set-sym (gensym 'kw-set) - distribute-kws (gensym 'distribute-kws) - entire-map (gensym 'entire-map) - k (gensym 'k) - v (gensym 'v) - mta (gensym 'mta) - ] - `(do - (deftype ~cls-nme [~@munge-kws ~entire-map ~mta ~kw-set-sym] - clojure.lang.IPersistentMap - clojure.lang.IKeywordLookup - (~'valAt [this# k#] - (.valAt this# k# nil)) - (~'valAt [_# k# default-value#] - (case k# - ~@(interleave kws-sorted - (map (fn [ret] - `(do - ;(prn "cached result: " ~ret) - ~ret)) - munge-kws)) - (get ~entire-map k# default-value#))) - clojure.lang.IPersistentCollection - (~'cons [this# [k# v#]] - (assoc this# k# v#)) - (~'assoc [_# ~k ~v] - (if (keyword? ~k) - (case ~k - ;; if key is already present, just replace the - ;; relevant field - ~@(mapcat (fn [k-exists i] - {:pre [(keyword? k-exists)]} - [k-exists - `(new ~cls-nme - ~@(assoc munge-kws i v) - (assoc ~entire-map ~k ~v) - ~mta - ~kw-set-sym)]) - kws-sorted - (range)) - ;; if it's a new key, try and find a fast version - (let [kw-set2# (conj ~kw-set-sym ~k)] - (if-let [ctor# (has-cached-class kw-set2#)] - (ctor# kw-set2# ~entire-map ~mta) - ;; give up - (with-meta - (assoc ~entire-map ~k ~v) - ~mta)))) - ;; just extend the entire map - (new ~cls-nme ~@munge-kws (assoc ~entire-map ~k ~v) ~mta ~kw-set-sym))) - (~'getLookupThunk [this# k#] - (let [~'gclass (class this#)] - (case k# - ~@(let [hinted-target (with-meta 'gtarget {:tag cls-nme})] - (mapcat - (fn [kw fld] - [kw - `(reify clojure.lang.ILookupThunk - (get [~'thunk ~'gtarget] - (if (identical? (class ~'gtarget) ~'gclass) - (. ~hinted-target ~(symbol (str "-" fld))) - ~'thunk)))]) - kws-sorted - munge-kws)) - nil))) - - (~'without [_# k#] - (if (keyword? k#) - (if nil #_(has-cached-class) - nil ;(construct-cached-class) - (with-meta - (dissoc ~entire-map k#) - ~mta)) - (new ~cls-nme ~@munge-kws (dissoc ~entire-map k#) ~mta ~kw-set-sym)))) - (fn [kws# ~entire-map mta#] - (let [~distribute-kws (vec (sort kws#))] - (new ~cls-nme - ~@(map (fn [i] - {:pre [(integer? i)]} - `(get ~entire-map - (nth ~distribute-kws ~i))) - (range (count kws))) - ~entire-map - mta# - kws#)))))) - -; kws : (Set Kw) -; entire-map : Map -; mta : (U nil Map) -(deftype UncachedMap [kws entire-map mta] - clojure.lang.IPersistentMap - (valAt [this k] - (.valAt this k nil)) - (valAt [_ k default-value] - #_ - (when (< (rand) 0.001) - (get-occured! kws)) - (get entire-map k default-value)) - clojure.lang.IPersistentCollection - (cons [this [k v]] - (assoc this k v)) - (assoc [_ k v] - (let [entire-map (assoc entire-map k v)] - (if (keyword? k) - (let [kws (conj kws k)] - (assoc-occured! kws) - (if-let [ctor (has-cached-class kws)] - (do - (prn "use optimised map") - (ctor kws entire-map mta)) - ;; give up - (new UncachedMap kws entire-map mta))) - ;; just extend the entire map - (new UncachedMap kws entire-map mta)))) - (without [_ k] - (if (keyword? k) - (if-let [ctor (has-cached-class (disj kws k))] - (ctor (disj kws k) (dissoc entire-map k) mta) - (new UncachedMap (disj kws k) (dissoc entire-map k) mta)) - (new UncachedMap kws (dissoc entire-map k) mta))) - (seq [_] (seq entire-map)) - (empty [_] (with-meta (empty entire-map) mta)) - ) - -(defn uncached-map [& args] - (loop [m (transient {}) - kws #{} - args args] - (if (not args) - (do - (assoc-occured! kws) - (if-let [ctor (has-cached-class kws)] - (ctor kws (persistent! m) nil) - (new UncachedMap kws (persistent! m) nil))) - (let [[k & args] args - _ (assert args "Odd number of arguments") - [v & args] args] - (recur (assoc! m k v) - (if (keyword? k) - (conj kws k) - kws) - args))))) - -(defn uncached-1arg [m] - (into (uncached-map) m)) - -(defn generate-fast-kw-map [kws] - {:pre [(set? kws)]} - (swap! map-ctor-cache - update kws - (fn [f] - (if f - f - (eval - (quoted-cached-map-fn kws)))))) - -(def per-hash - (hash-map - :a 1 - :b 2 - :c 3 - :d 4 - :e 5 - :f 6 - :g 7 - :h 8 - :i 9 - :j 10 - )) - -(assert (instance? clojure.lang.PersistentHashMap per-hash)) - -(def opt-hm - (let [kw-set (set (filter keyword? (keys per-hash)))] - (;pprint - (eval - (quoted-cached-map-fn - kw-set)) - kw-set - per-hash - nil))) - -(def no-cache - (uncached-map - :a 1 - :b 2 - :c 3 - :d 4 - :e 5 - :f 6 - :g 7 - :h 8 - :i 9 - :j 10)) - -(comment - (time - (get per-hash :a)) - (time - (get opt-hm :a)) - (time - (get opt-hm :b)) - (get opt-hm 1) - (pprint - (quoted-cached-map-fn (set (keys per-hash)))) - ) - -(defn get-per-hash [] - (let [m per-hash] - (with-progress-reporting - (quick-bench - (:a m))))) - -(defn get-big-case [] - (let [m per-hash] - (with-progress-reporting - (quick-bench - (case :a - :a 1 - :b 2 - :c 3 - :d 4 - :e 5 - :f 6 - :g 7 - :h 8 - :i 9 - :j 10 - ))))) - -(defn compile-big-case [] - (let [m per-hash] - (with-progress-reporting - (quick-bench - (eval - '(case :a - :a 1 - :b 2 - :c 3 - :d 4 - :e 5 - :f 6 - :g 7 - :h 8 - :i 9 - :j 10 - )))))) - -(defn get-record [] - (let [m (into (->A 1) - per-hash)] - (with-progress-reporting - (quick-bench - (:a m))))) - -(defn get-id-map [] - (let [m (java.util.IdentityHashMap. per-hash)] - (with-progress-reporting - (quick-bench - (:a m))))) - -(defn get-conc-map [] - (let [m (java.util.concurrent.ConcurrentHashMap. per-hash)] - (with-progress-reporting - (quick-bench - (:a m))))) - -(defn get-opt-hm [] - (let [m opt-hm] - (with-progress-reporting - (quick-bench - (:a m))))) - -(defn get-nocache-hm [] - (let [m no-cache] - (with-progress-reporting - (quick-bench - (:a m))))) - -(defn exercise-bench [f n] - (loop [i 20 - m (f (into {:a 1 :b 2 :c 3 :d 4 - :e 5 :f 6 :g 7 :h 8} - (map #(vector % %) (range n))))] - (when-not (zero? i) - (dotimes [_ 100000] - (+ (:a m) (:b m) (:c m) (:d m) - (:e m) (:f m) (:g m) (:h m))) - (recur (dec i) (update m :a inc))))) - -(def extra 100) - -(defrecord Exercise [a b c d e f g h]) - -(defmacro time-to-out - "Evaluates expr and prints the time it took. Returns the value of - expr." - {:added "1.0"} - [expr] - `(let [start# (. System (nanoTime)) - ret# ~expr - ms# (/ (double (- (. System (nanoTime)) start#)) 1000000.0) - _# (prn (str "Elapsed time: " ms# " msecs")) - ] - [ret# ms#])) - -(def latest-graph (atom {})) - -(defn record-fs [m extra] - (run! (fn [[label f]] - (let [[ret ms] (time-to-out (exercise-bench f extra))] - (swap! latest-graph assoc-in [label extra] ms))) - m)) - -(defn big-bench [] - (reset! latest-graph {}) - (dotimes [i 20] - (let [extra (* i 100)] - (record-fs {:plain-map #(into {} %) - :record map->Exercise - :rt-cache uncached-1arg} - extra) - #_(exercise-bench #(into {} %) extra) - #_(exercise-bench map->Exercise extra) - #_(exercise-bench uncached-1arg extra)))) - -;(def data '{:plain-map {0 837.900884, 1300 2049.42444, 300 1505.881845, 600 1387.997231, 1400 1817.21074, 1000 1521.329677, 500 1759.423488, 1800 1757.819692, 1700 2129.781288, 1900 2973.424349, 100 1435.768863, 1200 2573.8774, 800 1784.948714, 1600 1936.875666, 1500 2023.47916, 1100 1855.281003, 200 1447.167303, 900 1481.740526, 700 1729.756068, 400 1331.124945}, :record {0 840.862397, 1300 1212.918047, 300 904.195596, 600 857.498675, 1400 1047.268085, 1000 1079.314484, 500 849.688625, 1800 1400.642201, 1700 1181.103518, 1900 2108.923538, 100 894.77844, 1200 1334.392182, 800 1099.811693, 1600 1232.646281, 1500 1110.733413, 1100 1598.098832, 200 921.830137, 900 936.40417, 700 884.393927, 400 868.788413}, :rt-cache {0 892.363186, 1300 1047.200465, 300 944.139623, 600 835.013332, 1400 1112.890638, 1000 904.91121, 500 907.794038, 1800 3016.390694, 1700 2109.647289, 1900 3844.42986, 100 972.581187, 1200 1294.22056, 800 938.415172, 1600 1261.062708, 1500 1203.444674, 1100 1569.635548, 200 921.286823, 900 960.614487, 700 841.138563, 400 850.684909}}) - -(defn to-tex [data] - (vec - (for [[k v] data] - [k (apply str - (mapv - (fn [[k v]] - (str "(" k "," v ") ")) - (sort-by first v)))])))