Ooh, thanks for your tips.

On Sun, Oct 8, 2017 at 7:19 PM, dennis zhuang <killme2...@gmail.com> wrote:

> First, the  alphabet-macro is wrong, it should use name instead of str in
> comp:
>
> user=> (macroexpand-1 '(alphabet-macro))
> (do (clojure.core/defrecord Alphabet [:a :b :c :d :e :f :g :h :i :j :k :l
> :m :n :o :p :q :r :s :t :u :w :v :x :y :z]) (def dummy-record (Alphabet. 0
> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25)))
> user=> (get dummy-record  :a)
> nil
>
> fixed it with name:
>
> (defmacro alphabet-macro []
>   `(do
>      (defrecord ~'Alphabet [~@(map (comp symbol name) a-z-ks)])
>      (def ~'dummy-record (~'Alphabet. ~@(range 26)))))
>
> (alphabet-macro)
> user=> (macroexpand-1  '(alphabet-macro))
> (do (clojure.core/defrecord Alphabet [a b c d e f g h i j k l m n o p q r
> s t u w v x y z]) (def dummy-record (Alphabet. 0 1 2 3 4 5 6 7 8 9 10 11 12
> 13 14 15 16 17 18 19 20 21 22 23 24 25)))
>
> user=> (get dummy-record  :a)
> 0
>
> After fixed, the benchmark result is as expected.
>
>
>
> 2017-10-08 16:40 GMT+08:00 Jiacai Liu <jiacai2...@gmail.com>:
>
>> As I read JoyOfClojure, it says one of reasons that prefer record over
>> plain map is speed, out of curiosity I test this using
>> https://github.com/hugoduncan/criterium, but the result is just contrary
>> to  my expectation. record is slower than map. Is there any optimizations
>> made to clojure 1.8.0 ?
>>
>> test  code: https://gist.github.com/jiacai2050/cdaaffa93079a4b8451727ace
>> 0c13064
>>
>> --
>> 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.
>>
>
>
>
> --
> 庄晓丹
> Email:        killme2...@gmail.com
> Site:           http://fnil.net
>
> 不学习,毋宁死
>
> --
> 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.
>

-- 
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.

Reply via email to