(Whenever I say I in the following post, I mean to say "I with the help of



Anarchid and



ikinz ")
https://docs.google.com/spreadsheets/d/15dq0EuuhB29ezifaOQIu2PMpR9T7hbpeGGmgqMPGACI/edit#gid=0I suspected the all round fall in performance, especially in the event may be the result of lua not getting optimised as much as it did in 91.0 as apparently the liblua glue code was changed a bit.
So I've compiled a 98.0 version with 91.0's lua (and some small fixes to make it actually compile).
First result was a significantly larger file size, probably due to inlining of lua functions that now actually works.
Second result can be seen in the benchmark under 98-frankenlua (it's better than both 98 and 91). It's indeed only one run, I'll conduct more, but mild optimism may be in place.
EDIT:
diff is here:
https://gist.github.com/ashdnazg/007390d11354c8ed723aEDIT 2:
I was wrong about inlining I think, but I'm pretty positive the lock that was added affects the performance significantly
EDIT 3:
https://gist.github.com/ashdnazg/8ef5721ea9ff91883bf9This seems to be the thing that affected performance the most.
I suppose there's a reason for a lock, so it can't just be removed, but that's where we should concentrate to have the largest improvement.
EDIT 4:
Just had some tests, and I've managed to play 1v1 with one client having develop version and one develop+patch. Haven't encountered desyncs. Also managed to view replays of one with the other with no desyncs.
I think the lock is there to allow lua to run jobs in parallel, but that never actually happens in the current engine design, so we're just wasting lots of cycles with no (apparent?) gain.