Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] Gripes with array
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Damien Doligez <damien.doligez@i...>
Subject: Re: [Caml-list] Gripes with array
On Sep 9, 2004, at 04:10, Jon Harrop wrote:

> I'm increasingly finding the outrageously finite size limit of arrays 
> to be a
> pain.

How I would like to get rid of that limit!

> Am I right in thinking that the maximum
> non-float array size on a 64-bit machine is 18,014,398,509,481,983?

That's correct.  It's a good thing that 32-bitters are on their way out.

> Also, can Array.init be made to fill the elements only once?

No, that's impossible without breaking the GC invariants.

>  This would make quite a few things twice as fast

Twice?  I doubt it very much.

> Array.copy could then be written more succinctly and
> efficiently in terms of Array.init as:
>
> let copy a = init (length a) (fun i -> a.(i))

Exactly how it's written now, except that it's inlined by hand for
performance reasons.

> Does anyone have any pointers to information about the origin of the 
> size
> limit for arrays? I assume it is something to do with the garbage 
> collector
> using a fixed-size tag instead of a variable-size one but I'd be 
> interested
> in the details.

Yes, but the main use of the tag is not garbage collection.


On Sep 9, 2004, at 09:17, Jean-Christophe Filliatre wrote:

> But I must  agree with you: this is definitely too  small and we could
> imagine  that, when the  tag says  a block  is an  array, the  size is
> stored within the first (or the last) field instead.

The last, really?


On Sep 9, 2004, at 10:23, Richard Jones wrote:

> I have a similar problem with the maximum size of strings.  In
> practical terms, it limits the size of file uploads to COCANWIKI to
> around 6 MB (ie., not very much) [not the full 16 MB because of
> character escaping, but even 16 MB would be far too small].

Maybe you should use bigarrays instead of strings.


A general remark: for more details on the internal representation of
O'Caml values, you can read < 
http://caml.inria.fr/ocaml/htmlman/manual032.html >.

-- Damien

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners