And equality time does depend on the size of the data structure too it
seems:

user=> (def v (doall (range 1000)))
user=> (def v2 (doall (range 1000)))
user=> (time (= v2 v))
"Elapsed time: 2.772923 msecs"
user=> (def v (doall (range 100000)))
user=> (def v2 (doall (range 100000)))
user=> (time (= v2 v))
"Elapsed time: 40.998981 msecs"
user=> (def v2 (doall (range 10)))
user=> (time (= v2 v))
"Elapsed time: 0.182742 msecs"

So forget I spoke!


On Mar 12, 4:07 pm, Raffael Cavallaro <raffaelcavall...@gmail.com>
wrote:
> On Mar 11, 6:57 pm, linh <nguyenlinh.m...@gmail.com> wrote:
>
> > i didn't think of that.
> > if equality tests is instant, would finding out the difference also be
> > instant?
> > for example, is this instant: (difference new-set old-set) ?
>
> I don't think so:
>
> (defn set-difference-time-test [n]
>   (let [s1 (set (apply hash-map
>                        (take n
>                              (interleave
>                               (map #(keyword (str %))
>                                    (iterate inc 0))
>                               (iterate inc 100)))))
>         s2 (conj s1 [:foozle "woozle"])]
>     (time (difference s2 s1))))
>
> user=> (set-difference-time-test 1000)
> "Elapsed time: 1.58 msecs"
> #{[:foozle "woozle"]}
> user=> (set-difference-time-test 10000)
> "Elapsed time: 35.435 msecs"
> #{[:foozle "woozle"]}
> user=> (set-difference-time-test 100000)
> "Elapsed time: 147.856 msecs"
> #{[:foozle "woozle"]}
> user=> (set-difference-time-test 1000000)
> "Elapsed time: 1061.1 msecs"
> #{[:foozle "woozle"]}
--~--~---------~--~----~------------~-------~--~----~
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
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to