L1VM - benchmark 06
L1VM - benchmark 06
I did write a small benchmark running on my L1VM and Node.js. It adds double floating point numbers in a loop.
Here are the results I got:
Node.js
=======
$ time node double-benchm-06.js
start...
1
273000000456
real 1m27,913s
user 1m29,480s
sys 0m0,657s
L1VM JIT compiler
=================
$ time l1vm double-benchm-jit-06 -q
273000000456.0000000000
real 1m33,978s
user 1m33,792s
sys 0m0,010s
L1VM no JIT-compiler !!!
========================
$ time l1vm double-benchm-06 -q
273000000456.0000000000
real 0m56,549s
user 0m56,477s
sys 0m0,008s
The benchmarks did run on this CPU:
Intel(R) Core(TM) i5-9300HF CPU @ 2.40GHz
UPDATE: Friday 06-17: I was just curious how fast the L1VM would be without it’s JIT-compiler.
The result did surprise me. I never thought it will be faster without the JIT compiled code!!!
Now the L1VM is way ahead of Node.js running the same calculations loop. This is awesome!
So my L1VM execution engine is faster than the JIT-compiled code in this case.
I did write the whole L1VM (JIT-compiler) alone. If you compare this to the Node.js (V8 JIT-compiler) made by Google, Red Hat and other companies and developers, then you realize the insane difference!
Maybe they did spend countless man hours to make the V8 JIT-compiler output code fast.
And on the other side it’s me, a self taught software developer with no CS degree at all!
I did spend a lot time reading scientific papers about VM design. There are a few good sources out there.
UPDATE: Saturday 06-18: I did change the maxloop to: 2400000000Q and did run the benchmarks. Now Node.js is faster than the L1VM:
maxloop: 2400000000Q
Node.js
=======
$ time node double-benchm-06.js
start...
1
1092000000456
real 6m6,960s
user 6m9,409s
sys 0m1,973s
L1VM
====
$ time l1vm double-benchm-06 -q
1092000000456.0000000000
real 6m28,902s
user 6m27,291s
sys 0m0,093s
L1VM JIT-compiler
=================
$ time l1vm double-benchm-jit-06 -q
1092000000456.0000000000
real 6m24,596s
user 6m23,034s
sys 0m0,097s
And the JIT-compiled code is a bit faster than the normal L1VM. I think the Node.js can do more optimizations to the code, if the run time is longer.
Here is the benchmark archive: benchmark-06-double