English version
Accueil     À propos     Téléchargement     Ressources     Contactez-nous    

Ce site est rarement mis à jour. Pour les informations les plus récentes, rendez-vous sur le nouveau site OCaml à l'adresse ocaml.org.

Browse thread
[Caml-list] Stopping a value from getting GC'd
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2005-08-18 (02:45)
From: Alain Frisch <Alain.Frisch@i...>
Subject: Re: [Caml-list] Cost of register_global_root
Nathaniel Gray wrote:
> One thing that the FM doesn't mention is how expensive it is to
> register a global root.  Can I register thousands of them or will
> there be performance problems?

The runtime system stores the global roots in a skip list. One should
expect probabilistic O(log n) complexity with a small constant for each
insertion and deletion, where n is the number of already registered
global roots.

Another option is to manage the roots yourself (e.g. you put them in an
array and store indexes into this array in your custom data structure).
This might be necessary if the custom blocks are under the control of
another memory management system which can moves blocks around.

-- Alain