On Thu, Nov 5, 2009 at 1:45 PM, logicmoo@gmail.com wrote:
Just a comment
most of the startup time is not spent assigning variables, but loading and instantiating compiled functions through reflection, and serialization would probably not help much in this case. What could help is, as per Ville's idea, create a big "loader" class which references compiled function classes directly by name in its bytecode
Other java lisps define each Primitive execute as a single static function in a trampolines file. The Primitive itself just calls the static function in the trampolines ( they are named in such a way it is easy to reference the class that holds nothing but static functions).. In compiled code there is never any reason to reference the Primitive or even the Symbol that uses it. The compiled code is simply a series of static functions calling static functions
This is a useful technique to speed up compiled code. It could also speed up startup times as long as you don't invoke such primitives from interpreted code during startup (in such a case, you would need to load and install the appropriate Primitive subclass to invoke it, or use a generic subclass that invokes the appropriate static method through reflection).
Alessio