Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduce %EXPANSION, optimize LET-SYMBOL #226

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

shawwn
Copy link
Contributor

@shawwn shawwn commented Dec 6, 2022

This gives a ~20% speed boost by making ~60% fewer calls to MACROEXPAND.

Here's a breakdown:

              current  new
runtime.js    11,914   5,194
macros.js     32,248   12,128
main.js       3,941    1,158
reader.js     3,037    1,654
compiler.js   34,379   13,476
system.js     512      485
runtime.lua   10,152   4,609
macros.lua    31,361   11,619
main.lua      4,109    1,226
reader.lua    2,993    1,610
compiler.lua  32,832   13,096
system.lua    813      603
test.js       188,983  76,320
test.lua      189,325  77,022
total         546,599  220,200

Graph (linear scale):
image

Graph (log scale):
image

Speedups using LuaJIT:

current:

$ make clean 2>/dev/null; time LUMEN_LUA=luajit LUMEN_HOST=luajit make -B >/dev/null
LUMEN_LUA=luajit LUMEN_HOST=luajit make -B > /dev/null  0.40s user 0.09s system 85% cpu 0.572 total
$ make clean 2>/dev/null; time LUMEN_LUA=luajit LUMEN_HOST=luajit make -B >/dev/null
LUMEN_LUA=luajit LUMEN_HOST=luajit make -B > /dev/null  0.40s user 0.08s system 84% cpu 0.565 total
$ make clean 2>/dev/null; time LUMEN_LUA=luajit LUMEN_HOST=luajit make -B >/dev/null
LUMEN_LUA=luajit LUMEN_HOST=luajit make -B > /dev/null  0.40s user 0.08s system 85% cpu 0.553 total
$ make clean 2>/dev/null; time LUMEN_LUA=luajit LUMEN_HOST=luajit make -B >/dev/null
LUMEN_LUA=luajit LUMEN_HOST=luajit make -B > /dev/null  0.39s user 0.08s system 86% cpu 0.548 total

new:

$ make clean 2>/dev/null; time LUMEN_LUA=luajit LUMEN_HOST=luajit make -B >/dev/null
LUMEN_LUA=luajit LUMEN_HOST=luajit make -B > /dev/null  0.34s user 0.09s system 85% cpu 0.500 total
$ make clean 2>/dev/null; time LUMEN_LUA=luajit LUMEN_HOST=luajit make -B >/dev/null
LUMEN_LUA=luajit LUMEN_HOST=luajit make -B > /dev/null  0.33s user 0.09s system 88% cpu 0.478 total
$ make clean 2>/dev/null; time LUMEN_LUA=luajit LUMEN_HOST=luajit make -B >/dev/null
LUMEN_LUA=luajit LUMEN_HOST=luajit make -B > /dev/null  0.32s user 0.08s system 87% cpu 0.462 total
$ make clean 2>/dev/null; time LUMEN_LUA=luajit LUMEN_HOST=luajit make -B >/dev/null
LUMEN_LUA=luajit LUMEN_HOST=luajit make -B > /dev/null  0.34s user 0.09s system 88% cpu 0.484 total

I was going to show node speedups as well (equally significant) but I'm being pulled away from the computer for the moment.

This gives a ~20% speed boost by making ~60% fewer calls to MACROEXPAND.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant