Added Luajit experiments
| Author | Mitja Felicijan <mitja.felicijan@gmail.com> | 2025-03-29 01:39:29 +0100 |
| Committer | Mitja Felicijan <mitja.felicijan@gmail.com> | 2025-03-29 01:39:29 +0100 |
| Commit | fd6d278926495633fb0194e9520eb65fad91c502 (patch) |
|
-rw-r--r-- |
README.md | 1 | |
-rw-r--r-- |
c-luajit/.gitignore | 2 | |
-rw-r--r-- |
c-luajit/Makefile | 17 | |
-rw-r--r-- |
c-luajit/fibonacci.c | 14 | |
-rw-r--r-- |
c-luajit/fibonacci.lua | 15 | |
-rw-r--r-- |
c-luajit/measurements.txt | 28 |
6 files changed, 77 insertions, 0 deletions
| diff --git a/README.md b/README.md | |||
| ... | |||
| 42 | | [c-bluetooth](./c-bluetooth) | clang-17 | Scans for all Bluetooth devices. | |
42 | | [c-bluetooth](./c-bluetooth) | clang-17 | Scans for all Bluetooth devices. | |
| 43 | | [d-x11](./d-x11) | dmd-2.110 | Uses X11 to create a basic window without any bindings needed. | |
43 | | [d-x11](./d-x11) | dmd-2.110 | Uses X11 to create a basic window without any bindings needed. | |
| 44 | | [d-bmp-header](./d-bmp-header) | dmd-2.110 | Reads BMP image header and prints the information out. | |
44 | | [d-bmp-header](./d-bmp-header) | dmd-2.110 | Reads BMP image header and prints the information out. | |
| 45 | | [c-luajit](./c-luajit) | clang-19 | Testing execution speed of Lua vs Luajit vs embedded Luajit. | |
||
| 45 | 46 | ||
| 46 | ## License |
47 | ## License |
| 47 | 48 | ||
| ... | |||
| diff --git a/c-luajit/.gitignore b/c-luajit/.gitignore | |||
| 1 | fibonacci |
||
| 2 | fibonacci.luac |
||
| diff --git a/c-luajit/Makefile b/c-luajit/Makefile | |||
| 1 | # Requires: sudo dnf install lua-devel luajit-devel |
||
| 2 | |||
| 3 | all: normal jit embedded |
||
| 4 | |||
| 5 | normal: |
||
| 6 | bash -c "time lua fibonacci.lua && echo" |
||
| 7 | |||
| 8 | jit: |
||
| 9 | luajit -b fibonacci.lua fibonacci.luac |
||
| 10 | bash -c "time luajit fibonacci.luac && echo" |
||
| 11 | |||
| 12 | embedded: |
||
| 13 | cc -o fibonacci fibonacci.c `pkg-config --cflags --libs luajit` |
||
| 14 | bash -c "time ./fibonacci && echo" |
||
| 15 | |||
| 16 | clean: |
||
| 17 | @rm fibonacci fibonacci.luac |
||
| diff --git a/c-luajit/fibonacci.c b/c-luajit/fibonacci.c | |||
| 1 | #include <lua.h> |
||
| 2 | #include <lualib.h> |
||
| 3 | #include <lauxlib.h> |
||
| 4 | |||
| 5 | int main(int argc, char **argv) { |
||
| 6 | lua_State *L = luaL_newstate(); |
||
| 7 | luaL_openlibs(L); |
||
| 8 | if (luaL_loadfile(L, "fibonacci.luac") || lua_pcall(L, 0, 0, 0)) { |
||
| 9 | fprintf(stderr, "Error: %s\n", lua_tostring(L, -1)); |
||
| 10 | return 1; |
||
| 11 | } |
||
| 12 | lua_close(L); |
||
| 13 | return 0; |
||
| 14 | } |
||
| diff --git a/c-luajit/fibonacci.lua b/c-luajit/fibonacci.lua | |||
| 1 | -- Naive recursive implementation to increase the time of computation. |
||
| 2 | function fibonacci(n) |
||
| 3 | if n == 0 then |
||
| 4 | return 0 |
||
| 5 | elseif n == 1 then |
||
| 6 | return 1 |
||
| 7 | else |
||
| 8 | return fibonacci(n - 1) + fibonacci(n - 2) |
||
| 9 | end |
||
| 10 | end |
||
| 11 | |||
| 12 | local n = 40 |
||
| 13 | local result = fibonacci(n) |
||
| 14 | print("The " .. n .. "th Fibonacci number is: " .. result) |
||
| 15 | |||
| diff --git a/c-luajit/measurements.txt b/c-luajit/measurements.txt | |||
| 1 | * Running with just normal Lua |
||
| 2 | |||
| 3 | $ time lua fibonacci.lua |
||
| 4 | The 40th Fibonacci number is: 102334155 |
||
| 5 | |||
| 6 | real 0m5.601s |
||
| 7 | user 0m5.590s |
||
| 8 | sys 0m0.001s |
||
| 9 | |||
| 10 | * Running with Luajit |
||
| 11 | |||
| 12 | $ luajit -b fibonacci.lua fibonacci.luac |
||
| 13 | $ time luajit fibonacci.luac |
||
| 14 | The 40th Fibonacci number is: 102334155 |
||
| 15 | |||
| 16 | real 0m1.050s |
||
| 17 | user 0m1.047s |
||
| 18 | sys 0m0.001s |
||
| 19 | |||
| 20 | * Running with Luajit embedded into C |
||
| 21 | |||
| 22 | $ cc -o fibonacci fibonacci.c `pkg-config --cflags --libs luajit` |
||
| 23 | $ time ./fibonacci |
||
| 24 | The 40th Fibonacci number is: 102334155 |
||
| 25 | |||
| 26 | real 0m1.033s |
||
| 27 | user 0m1.031s |
||
| 28 | sys 0m0.000s |
||