ok i like this variant: => (def r (memoize (A. "a" 3))) #'runtime.q_test/r => (time (dotimes [n 10000000] (hash r))) "Elapsed time: 342.363961 msecs" nil => (time (dotimes [n 10000000] (hash r))) "Elapsed time: 361.66747 msecs" nil
=> (time (dotimes [n 10000000] (hash (memoize (A. "a" 3))))) "Elapsed time: 1812.016478 msecs" nil => (time (dotimes [n 10000000] (hash (memoize (A. "a" 3))))) "Elapsed time: 1847.244062 msecs" nil On Sun, Feb 3, 2013 at 8:29 AM, AtKaaZ <atk...@gmail.com> wrote: > => (def m {:x "a" :y 3}) > #'runtime.q_test/m > => (time (dotimes [n 10000000] (hash m))) > "Elapsed time: 154.650091 msecs" > nil > => (time (dotimes [n 10000000] (hash m))) > "Elapsed time: 164.724641 msecs" > nil > => (time (dotimes [n 10000000] (hash m))) > "Elapsed time: 150.194984 msecs" > nil > > => (time (dotimes [n 10000000] (hash {:x "a" :y 3}))) > "Elapsed time: 57.981602 msecs" > nil > > => (time (dotimes [n 10000000] (hash {:x "a" :y 3}))) > "Elapsed time: 70.803223 msecs" > nil > > => (time (dotimes [n 10000000] (hash {:x "a" :y 3}))) > "Elapsed time: 67.395947 msecs" > nil > > > => (def r (A. "a" 3)) > #'runtime.q_test/r > => (time (dotimes [n 10000000] (hash r))) > "Elapsed time: 4906.641334 msecs" > nil > => (time (dotimes [n 10000000] (hash r))) > "Elapsed time: 4959.124395 msecs" > nil > > => (time (dotimes [n 10000000] (hash (A. "a" 3)))) > "Elapsed time: 4842.496589 msecs" > nil > > => (time (dotimes [n 10000000] (hash (A. "a" 3)))) > "Elapsed time: 4856.855515 msecs" > nil > > > > > On Sun, Feb 3, 2013 at 8:26 AM, AtKaaZ <atk...@gmail.com> wrote: > >> he's in RC4 >> => *clojure-version* >> {:major 1, :minor 5, :incremental 0, :qualifier "RC4"} >> >> >> => (time (dotimes [n 10000000] (hash {:x "a" :y 3}))) >> "Elapsed time: 70.037502 msecs" >> >> >> => (time (dotimes [n 10000000] (hash (A. "a" 3)))) >> "Elapsed time: 5307.93947 msecs" >> >> >> On Sun, Feb 3, 2013 at 8:22 AM, Leonardo Borges < >> leonardoborges...@gmail.com> wrote: >> >>> Are you running these in Clojure 1.5 RC-1 by any chance? That's when I >>> got results similar to yours. >>> >>> In Clojure 1.4, I get this: >>> >>> user> (time (dotimes [n 10000000] (hash {:x "a" :y 3}))) >>> "Elapsed time: 5993.331 msecs" >>> nil >>> user> (time (dotimes [n 10000000] (hash (A. "a" 3)))) >>> "Elapsed time: 3144.368 msecs" >>> >>> No clue as to the reason though - but it seems something might have >>> changed from 1.4 to 1.5? >>> >>> >>> Leonardo Borges >>> www.leonardoborges.com >>> >>> >>> On Sun, Feb 3, 2013 at 5:07 PM, Mark Engelberg <mark.engelb...@gmail.com> >>> wrote: >>> > I just went through the process of converting my map-based program >>> over to >>> > records, hoping it would improve speed. Much to my dismay, it actually >>> > slowed my program down substantially. With some profiling, I >>> discovered >>> > that one possible explanation is that (at least in RC4) hashing of >>> records >>> > is about 60x slower than their map-based counterpart. >>> > >>> > (defrecord A [x y]) >>> > => (time (dotimes [n 10000000] (hash {:x "a" :y 3}))) >>> > "Elapsed time: 90.631072 msecs" >>> > => (time (dotimes [n 10000000] (hash (A. "a" 3)))) >>> > "Elapsed time: 5549.788311 msecs" >>> > >>> > Any thoughts about why this is the case? >>> > >>> > -- >>> > -- >>> > 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/groups/opt_out. >>> > >>> > >>> >>> -- >>> -- >>> 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/groups/opt_out. >>> >>> >>> >> >> >> -- >> Please correct me if I'm wrong or incomplete, >> even if you think I'll subconsciously hate it. >> >> > > > -- > Please correct me if I'm wrong or incomplete, > even if you think I'll subconsciously hate it. > > -- Please correct me if I'm wrong or incomplete, even if you think I'll subconsciously hate it. -- -- 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/groups/opt_out.