lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


On 15 July 2015 at 22:11, Dibyendu Majumdar <mobile@majumdar.org.uk> wrote:
> The updated benchmarks are reproduced below.
>
> +---------------+---------+------------+------------+
> | Program       | Lua5.3  | Ravi(LLVM) | Luajit 2.1 |
> +===============+=========+============+============+
> |fornum_test1   | 9.187   | 0.31       | 0.309      |
> +---------------+---------+------------+------------+
> |fornum_test2   | 9.57    | 0.917      | 0.906      |
> +---------------+---------+------------+------------+
> |fornum_test3   | 53.932  | 4.598      | 7.778      |
> +---------------+---------+------------+------------+
> |mandel(4000)   | 21.247  | 1.582      | 1.633      |
> +---------------+---------+------------+------------+
> |fannkuchen(11) | 63.446  | 4.55       | 4.751      |
> +---------------+---------+------------+------------+
> |matmul(1000)   | 34.604  | 2.942      | 0.968      |
> +---------------+---------+------------+------------+
>

Hi,

I have done some investigation into the performance of the matrix
multiplication (matmul) benchmark. It turns out that if I omit the
range checks for array read operations then performance is on par with
LuaJIT when using LLVM 3.7. So I have added an option to allow user to
disable array range checks (when reading only) - this must be set when
compiling a function. The idea is that once code has been debugged,
array range checks are superfluous at least for the read operations.

I haven't yet compared the emitted machine code to verify that LuaJIT
is optimising away the range checks.

Regards
Dibyendu