I don't think this particular example relates.

Memoize produces a function, so the time spent is really about hashing
functions which presumably hashes on the address of the function (or
something similar) and never touches the underlying record.
In the later example, you are mostly timing the cost of repeatedly
memoizing, which creates a lot of anonymous functions, and would be
expected to be more time-consuming.

The other examples you posted are interesting, though.

On Sat, Feb 2, 2013 at 11:31 PM, AtKaaZ <atk...@gmail.com> wrote:

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

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


Reply via email to