(defprotocol my-protocol
(foo [this]))
(extend-protocol my-protocol
clojure.lang.IPersistentMap
(foo [this] "hello from map"))
(criterium.core/quick-bench
(satisfies? my-protocol {}))
(criterium.core/quick-bench
(foo {}))
Simply calling foo on an empty map takes 7 ns,
but checking whether the map satisfies my-protocol takes 22 µs, 3000 times
longer.
It seems like to call foo, some mechanism has to look up an implementation
of my-protocol for maps -- how is it we can do that so quickly for a call
and so slowly for satisfies?
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/d/optout.