Skip to content

Instantly share code, notes, and snippets.

@athos
Last active January 3, 2016 07:39
Show Gist options
  • Save athos/8431179 to your computer and use it in GitHub Desktop.
Save athos/8431179 to your computer and use it in GitHub Desktop.
(require '[clojure.java.io :as io]
'[clojure.string :as s])
(defn bench [filename f]
(with-open [r (io/reader filename)]
(->> (line-seq r)
(map f)
(group-by first))))
(defn f1 [line]
(s/split line #","))
(defn f2 [^String line]
(let [a (.split line ",")]
[(aget a 0) (aget a 1)]))
(defn f3 [^String line]
(let [i (.indexOf line ",")]
[(subs line 0 i) (subs line (inc i))]))
(defn f4 [^String line]
(let [i (.indexOf line \,)]
[(.substring line 0 i) (.substring line (inc i))]))
(comment
user=> (dotimes [_ 10] (time (bench "word-pairs.txt" f1)))
"Elapsed time: 526.227394 msecs"
"Elapsed time: 702.749791 msecs"
"Elapsed time: 562.34146 msecs"
"Elapsed time: 698.198075 msecs"
"Elapsed time: 541.922056 msecs"
"Elapsed time: 530.039631 msecs"
"Elapsed time: 794.938614 msecs"
"Elapsed time: 535.111616 msecs"
"Elapsed time: 713.351931 msecs"
"Elapsed time: 544.983888 msecs"
nil
user=> (dotimes [_ 10] (time (bench "word-pairs.txt" f2)))
"Elapsed time: 403.787892 msecs"
"Elapsed time: 662.57368 msecs"
"Elapsed time: 437.026249 msecs"
"Elapsed time: 642.806364 msecs"
"Elapsed time: 505.520853 msecs"
"Elapsed time: 594.884303 msecs"
"Elapsed time: 487.522537 msecs"
"Elapsed time: 409.583012 msecs"
"Elapsed time: 664.536535 msecs"
"Elapsed time: 429.284961 msecs"
nil
user=> (dotimes [_ 10] (time (bench "word-pairs.txt" f3)))
"Elapsed time: 415.879649 msecs"
"Elapsed time: 427.029762 msecs"
"Elapsed time: 601.36135 msecs"
"Elapsed time: 353.645478 msecs"
"Elapsed time: 329.444905 msecs"
"Elapsed time: 345.413541 msecs"
"Elapsed time: 345.17908 msecs"
"Elapsed time: 582.244321 msecs"
"Elapsed time: 468.696403 msecs"
"Elapsed time: 597.620492 msecs"
nil
user=> (dotimes [_ 10] (time (bench "word-pairs.txt" f4)))
"Elapsed time: 595.612801 msecs"
"Elapsed time: 319.554858 msecs"
"Elapsed time: 317.883967 msecs"
"Elapsed time: 324.611155 msecs"
"Elapsed time: 339.650851 msecs"
"Elapsed time: 576.29066 msecs"
"Elapsed time: 434.755482 msecs"
"Elapsed time: 406.41307 msecs"
"Elapsed time: 579.015913 msecs"
"Elapsed time: 440.795543 msecs"
nil
average:
f1: 614.9864456
f2: 523.7526386
f3: 446.6514981
f4: 433.45843
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment