Dear list,

We are building a cache in ocaml and we're wondering if it would make sense
to store ocaml values outside the reach of the gc. (gc on a 20GB cache
hangs the process for a second or so).

To run some experiments, we wrote a small library (
https://github.com/besport/ocaml-everlasting) that exposes two functions,
get and set.

When inserting a value, we copy recursively the blocs outside of the reach
of the gc (and put the resulting value in some C array). When getting the
value, we simply pass the pointer to the copied value to the ocaml code
(the structure is still coherent and the value is directly usable). We also
wrote an "update" function that compare a new value with the existing value
in cache, to avoid unnecessary memory allocation/deallocation.

It does not seems very stable though, but I don't know if it is a bug in
the update function or simply because this approach is not reasonable. Do
you have any thoughts? Is there any clever way to build a large cache in an
ocaml app ?

Thanks in advance for any tips!

Best

William


-- 
William Le Ferrand

Mobile : (+1) (415) 683-1484
Web : http://williamleferrand.github.com/
<http://www.linkedin.com/in/williamleferrand>

-- 
Caml-list mailing list.  Subscription management and archives:
https://sympa-roc.inria.fr/wws/info/caml-list
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs

Reply via email to