Before posting, I had repeated this multiple times, running this code
inside a sandbox.

After seeing your reply, I tried but couldn't repro it at the command line.

I could still repro it in the sandbox. But with a fresh sandbox, now I
can't repro it anymore. I guess some mysterious bit of state was
causing this (but only for the first call to vector-length??).

I know the rule -- only do serious profiling at the command line. In
this case I didn't expect it would matter. I figured "some number vs.
some smaller number" could be due to environment overhead, but not
"some number vs. 0". However I was wrong.

On Sat, Mar 8, 2014 at 1:57 PM, Laurent <laurent.ors...@gmail.com> wrote:
> 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