Hi All, I've been optimising a piece of code lately, and have come to wonder about the performance of keyword comparison. Specifically, I'm not sure whether the performance I'm seeing is what is expected. The data structures page on clojure.org [1] indicates that keywords "provide very fast equality tests". If I micro-benchmark with criterium, then I find the following:
As a baseline, comparing integers with `(= 0 1)` takes around 4ns. Comparing keywords with `(= :plus :minus)` takes around 30ns. This is about the same amount of time it takes to compare strings, `(= "plus" "minus")`, which comes in at about 25ns. This surprised me, as I would have guessed that "fast" would have been closer to the integer performance than the string performance. It's worth saying that I don't know a lot about benchmarking, but I do have some "real" code that's performance depends heavily on comparisons, and it seems to line up performance-wise with these micro-benchmarks. So, am I doing something silly (like I don't know about the fast = for keywords)? Or, are my expectations wrong, and this is about how long "fast" should be? Or is there a performance bug lurking? I'm using Clojure 1.6.0 (but have tried 1.5.0 and 1.7.0-alpha1 with similar results). x86_64 Mac OS X 10.9.5 4 cpu(s) Java HotSpot(TM) 64-Bit Server VM 25.5-b02 Thanks in advance for any input, Jony [1] http://clojure.org/data%5Fstructures -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.