"Abdulaziz Ghuloum" wrote: >>On Jan 7, 2010, at 10:04 AM, Marco Maggi wrote: >> >> I guess that Ikarus itself is not to blame, rather it is >> libffi which takes time. > > Can you explain how you came to that conclusion?
It is a guess made up from the following: 1. While Ikarus is almost always a bit slower than Mosh when running single-shot programs like my test suites (let's say 1/3 slower), the proportion in this case is huge. Ypsilon is always slower then Mosh and occasionally (but rarely) slower than Ikarus. The only true difference between this case and all the others in Nausicaa is the number of generated callouts (around 1300). 2. Ypsilon and Mosh have a very similar way of implementing the FFI (in facts, Higepon took code from Ypsilon for it); I have tracked Mosh's development in the last months and I have seen its execution speed go up significantly while Higepon was working on optimisations in the byte-compiler. I guess that Ypsilon is so slower mostly because Fujita has not worked to optimise the byte-compiler, yet. 3. Both Ypsilon and Mosh are faster than Ikarus in the single-shot program case, but in the past I have run some simple profiling of code timing execution after program loading and initialisation; the result was that Ikarus can be significantly faster. I gather that when executing code Ikarus is probably faster, while when loading and initialising the program it is probably slower. 4. The test program only calls a callout once; the bulk of the work is to generate the callouts themselves, which is the work of libffi. HTH -- Marco Maggi
