Hi everybody,
at the gretl conference the last couple of days we also talked about the
speed improvements, and (as always) an idea was to run some tests or
comparisons. So here's a first piece of evidence concerning the hansl
scripting language, which uses the non-econometric RBC solution code
example that Federico had presented at the Berlin conference in 2015.
The adapted code scripts are attached. (Ignore the reference to the
hanslspeedjulia.gfn package, it's not used in there and it's a
non-published secret package at this point.)
Notes:
- The code is heavily loop-based, and there are basically no calls to
other user-defined functions, and only relatively few calls to native
gretl functions. It's mostly just straightforward arithmetic, but still
long-running. AFAIK the function call overhead has also been much
improved in hansl in recent years, but this will _not_ be showing in
this example.
- I'm running the comparison on an old Windows-10 machine in the GUI
program; the gretl versions are:
(1) 1.9.12 from ten years ago (March 2013, 32bit);
(2) 2018a from almost exactly five years ago (June 2018, 64bit);
(3) the latest snapshot (June 2023, 64bit).
Executive summary:
gretl's performance in this subarea has tripled from 2013 to 2018, and
doubled again from 2018 to today. Overall in the last 10 years the gain
has almost been 6-fold. (The runtime today is about 17% of what it was
in 2013.)
Timings (best of two runs each):
- 742 sec with version 1.9.12
- 243 sec with version 2018a
- 127 sec with latest snapshot (2023b-git)
Finally, however, it is clear that this kind of code still runs
comparatively slow in interpreted languages like hansl. Doing
just-in-time compilation (JIT) on these kinds of loops will still bring
a massive speedup. (I'm seeing an additional factor of 20 or so.) But
that's a totally different story and a different kind of dimension. This
experiment is about documenting gretl's progress over time.
I know this would be a good addition to some wiki page or so, but for
now it's easier for me to just post this here on the list.
thanks
sven