I get :
> (let ((v (time (make-vector 50000000 0))))
    (time (vector-length v))
    (time (vector-length v))
    (time (vector-length v))
    (void))
cpu time: 188 real time: 191 gc time: 12
cpu time: 0 real time: 0 gc time: 0
cpu time: 0 real time: 0 gc time: 0
cpu time: 0 real time: 0 gc time: 0

Which seems consistent to me.

Are you trying on the command line?

Laurent


On Sat, Mar 8, 2014 at 7:35 PM, Greg Hendershott
<greghendersh...@gmail.com>wrote:

> As for length:
>
> (for ([i 3]) (collect-garbage))
> (let ((ls (time (make-list 50000000 0))))
>   (time (length ls))
>   (time (length ls))
>   (time (length ls))
>   (void))
>
> It's what I would expect:
>
> cpu time: 6733 real time: 6744 gc time: 6419
> cpu time: 141 real time: 141 gc time: 0
> cpu time: 145 real time: 145 gc time: 0
> cpu time: 142 real time: 142 gc time: 0
>
> - - - - -
>
> Next, thinking about 50000000 elements made me think about vectors,
> vector? and vector-length.
>
> This:
>
> (for ([i 3]) (collect-garbage))
> (let ((v (time (make-vector 50000000 0))))
>   (time (vector-length v))
>   (time (vector-length v))
>   (time (vector-length v))
>   (void))
>
> prints:
>
> cpu time: 182 real time: 183 gc time: 1
> cpu time: 315 real time: 315 gc time: 314
> cpu time: 0 real time: 0 gc time: 0
> cpu time: 0 real time: 0 gc time: 0
>
> Huh?  The first call to vector-length takes even longer than making
> the vector (and, seems to be almost entirely gc).
>
> I would have guessed that make-vector would create a structure with
> the length already stored in it, and all vector-length calls would be
> essentially 0.
> ____________________
>   Racket Users list:
>   http://lists.racket-lang.org/users
>
____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to