[Ecls-list] Further speed improvements

Juan Jose Garcia-Ripoll juanjose.garciaripoll at googlemail.com
Thu Feb 26 09:49:01 UTC 2009

Thanks to simplifications and inlining key functions, calling
interpreted functions is now a bit faster without any missing
functionality. Part of the improvement arises from new bytecodes for
dealing with function arguments, which simplifies the code and speeds
up argument parsing -- no need to check for keyword, optionals, rest,
etc, if not needed. As a side effect, the decrease in code size and in
the number of stack allocated variables seems to help the garbage
collector as well, as evidenced by the numbers in the ANSI test suite.

new_cfun branch

CALL-SYMBOL     COMPILED-FUNCTION      real:  169ms run:  181ms
CALL-SYMBOL     GENERIC-FUNCTION       real: 2165ms run: 2230ms
CALL-SYMBOL     INTERPRETED-FUNCTION   real: 2495ms run: 2600ms
CALL-FUNCTION   COMPILED-FUNCTION      real:  100ms run:  105ms
CALL-FUNCTION   GENERIC-FUNCTION       real: 2061ms run: 2129ms
CALL-FUNCTION   INTERPRETED-FUNCTION   real: 2419ms run: 2519ms

master branch

CALL-SYMBOL     COMPILED-FUNCTION      real:  189ms run:  194ms
CALL-SYMBOL     GENERIC-FUNCTION       real: 2425ms run: 2507ms
CALL-SYMBOL     INTERPRETED-FUNCTION   real: 3026ms run: 3135ms
CALL-FUNCTION   COMPILED-FUNCTION      real:  163ms run:  168ms
CALL-FUNCTION   GENERIC-FUNCTION       real: 2328ms run: 2476ms
CALL-FUNCTION   INTERPRETED-FUNCTION   real: 2884ms run: 2997ms


Instituto de Física Fundamental, CSIC
c/ Serrano, 113b, Madrid 28009 (Spain)

More information about the ecl-devel mailing list