Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
Preinitialized executables?
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Xavier Leroy <Xavier.Leroy@i...>
Subject: Re: Preinitialized executables?
> I have a program that needs to be initialied by building a large and
> fairly complicated data structure.  In Ocaml the fastest method I
> have found is to save the data structure in a file with output_value
> and then load it into the program with input_value, but even this way
> the overhead is considerable.  SML/NJ has a function named exportFn,
> which saves the program together with its state into an executable file:
> when the program is run from the file, control is transferred to a
> function given as a parameter to exportFn.  I wonder if something
> similar is possible in Ocaml.

It might be possible, but it would not be any faster than input_value.
The loading of a bytecode executable inside the bytecode interpreter
is, for the most part, performed by input_value.  Same thing for
SML/NJ, I believe.

As for ocamlopt, there is really no portable way to dump a running
program with its current state in an executable file.  Recent versions
of SML/NJ have abandoned this approach and explicitly load the data
from a file on startup, rather than let the kernel page them in on demand.

If loading time is really an issue, an alternative would be to load
parts of the data structure on demand, using e.g. the DBM library.


- Xavier Leroy