From: Xavier Leroy <Xavier.Leroy@inria.fr>
Subject: Re: Preinitialized executables?
In-Reply-To: <9709122357.AA05419@alfard.utu.fi> from Matti Jokinen at "Sep 13, 97 02:57:41 am"
To: email@example.com (Matti Jokinen)
Date: Thu, 18 Sep 1997 10:41:33 +0200 (MET DST)
> 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
This archive was generated by hypermail 2b29 : Sun Jan 02 2000 - 11:58:12 MET