Development work on the new J engine has mostly been focused on fixing
bugs (& learning the source code), but the first two changes to be
released were for performance improvements.
First was a complete rewrite of the parser; next was a change to
numerous switch statements to take advantage of the count-trailing-zeros
instructions in modern CPUs. Together, these changes improved
throughput by almost 11% on our testcase, which consists of running lint
on the source of lint (average of 50 runs). Each run took 1.91 seconds
originally, 1.72 seconds with the rewrites.
Considering that lint is not a mostly-scalar task that spends a lot of
time parsing short sentences, an 11% improvement is respectable. It
would be interesting to see what difference the new code makes for other
applications.
We would like a benchmark that uses scalar code heavily. This is the
kind of application that you might say is 'not good for J'. We'd like to
make J better on those applications. If you have some old FORTRAN-style
code written in J, we'd like to see it.
To get the new Jengine see http://www.jsoftware.com/download/jengine/
Henry Rich
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm