Consider we have class Foo in package com.app.super.my.package1.package2.package3.BarHello, Justin!
> I'd really like to get feedback from the Lua folks here on the structure/performance of the Lua generated codeI've worked a bit with this generator and what I can say:in-place increment, decrement operations converts into (function() ... end)() this is good, but not always necessary.
Some AST preprocessing could be made to detect if return of this operations are required. What I mean:var i = 2;i++;print(i);now converts into something like:local i = 2(function()local hx_tmp = ii = i + 1return hx_tmpend)()print(i)Also, long chain of table field dereferencing generates on calls, and this is major performance issue IMO.Then, each call to static field of this class will look like
local instance = com.app.super.my.package1.package2.package3.Bar.Foo.new()as you can see, there are 9 table lookups
For my work project I've changed generator to produce "cached" classes, so class declaration looks like:
com.app.super.my.package1.package2.package3.Bar.Foo = _hx_new();
local com_app_super_my_package1_package2_package3_Bar_Foo =
com.app.super.my.package1.package2.package3.Bar.FooAlong with removing stuff needed for reflection (code I converting doesn't use this). I've got about 2 times performance boost.I'm using lua5.2 as target, but under LuaJIT with and without jit-compilation 2-times boost also persists.