Closed lolbinarycat closed 8 months ago
apperently the CI uses a different lua version than minetest 5.7
since it lacks table.move.
not sure what to make of that
table.move
was added in Lua 5.3 and appears to be supported as a non-standard extension in LuaJIT.
You can't use it.
LuaJIT adds table.move. You can check at load if it exists, and implement add_list
without it if it's not there.
all this code review is nice, but what would really be helpful is for someone benchmark this to see if the speedup is worth me fixing everything up.
or if someone could point me in the direction of some lua/minetest benchmarking tools i could try to do it myself.
my limited testing was based off of realtime and framerate, both of which can be influenced by other processes.
Minetest has an internal profiler:
According to mesecons/actionqueue.lua
, the actions are executed each globalstep, thus you should see a difference in one of the mesecons -> globalstep[??]
entries after running /profiler save txt
(for comparison). I however do not know what the best way to test this optimization would be - 100 pistons with sand on top of them?
Minetest has an internal profiler:
* Settings to enable it: https://github.com/minetest/minetest/blob/335af393f09b3629587f14d41a90ded4a3cbddcd/builtin/settingtypes.txt#L1734-L1762 * Chat command to export: https://github.com/minetest/minetest/blob/335af393f09b3629587f14d41a90ded4a3cbddcd/builtin/profiler/init.lua#L45-L46
According to
mesecons/actionqueue.lua
, the actions are executed each globalstep, thus you should see a difference in one of the mesecons ->globalstep[??]
entries after running/profiler save txt
(for comparison). I however do not know what the best way to test this optimization would be - 100 pistons with sand on top of them?
personally i used stacks of slimeblocks on top of sticky pistons connected to a 1-tick clock.
this function is a big bottleneck, since it contains several layers of nested loops, and has quite a few allocations in the innermost levels.
i did my best to optimize it, and i'm only confident in about half my changes, although some imprecice testing implied as much as a 10x speedup.
if someone could benchmark this properly and see what changes are worth it, that would be greatly appreciated.