On Mon, Aug 23, 2010 at 8:06 AM, Christophe TROESTLER
<Christophe.Troestler+ocaml@umh.ac.be> wrote:
> On Thu, 19 Aug 2010 07:52:33 -0400, Ethan Burns wrote:
>>
>> let r = ref 0.0 ;;
>> for i = 0 to 1000000000 do r := float i done;
>> Printf.printf "%f\n" !r;
>> Printf.printf "words: %f\n" (Gc.stat ()).Gc.minor_words
>
> To add a precision to others' answers : float refs are unboxed
> _locally_. Â If you rewrite your code as
>
> let r = ref 0.0 in
> for i = 0 to 1000_000_000 do r := float i done;
> Printf.printf "%f\n" !r;
> Printf.printf "words: %f\n" (Gc.stat ()).Gc.minor_words
>
> then it runs at about the same speed as you other version.
$ time ./a.out
1000000000.000000
words: 2000000367.000000
real 0m2.655s
It does seem to run a lot faster than my first version, but it also
seems to allocate a whole lot. If it is still allocating just as much
why is this version so much faster?
Ethan