Ciao, the following is the output of a very simple program[1] loading the low-level library[2] from my work-in-progress binding to libxml2, which creates a lot of callouts:
===> test file ../tests/test-platform.sps with Ikarus *** testing platform API ; *** checks *** : 1 correct, 0 failed. real 53.47 user 53.24 sys 0.21 ===> test file ../tests/test-platform.sps with Mosh *** testing platform API ; *** checks *** : 1 correct, 0 failed. real 1.31 user 1.25 sys 0.05 ===> test file ../tests/test-platform.sps with Ypsilon *** testing platform API ; *** checks *** : 1 correct, 0 failed. real 13.05 user 14.53 sys 0.04 it is the second run, so all the libraries are compiled; the execution speed of Ikarus is a bit embarrassing, while the one of Mosh is amazing. At the first run, when Mosh is compiling, it is Mosh the slowest one. The program uses a modified Nausicaa's Ikarus FFI layer which does not cache the callout constructor; but I tested that, with and without caching of callout constructors, the difference is only one or two seconds. I guess that Ikarus itself is not to blame, rather it is libffi which takes time. I will split The One Big Library into small libraries (not all of them are always needed), but can something be done about it? TIA [1] <http://github.com/marcomaggi/nausicaa/raw/master/libxml2/tests/test-platform.sps> [2] <http://github.com/marcomaggi/nausicaa/raw/master/libxml2/src/libraries/foreign/xml/libxml2/platform.sls> -- Marco Maggi
