-
Notifications
You must be signed in to change notification settings - Fork 64
Performance
First of LLVM 8 with hand-coded IR generation (including type based aliasing info, and some use of optimizer hints on branches):
a) Simple for loop (1000000000 iterations): 0 secs b) Fannkuchen(11): 3.36 secs c) matrix multiplication (1000): 0.98 secs d) mandelbrot(4000): 1.08 secs e) sieve: 5.65 secs
Next LLVM 8 with dmr_C based C code converted to IR.
a) Simple loop: 0.87 secs b) Fannkuchen(11): 3.28 secs c) matrix multiplication (1000): 2.42 secs d) mandelbrot: 1.58 secs e) sieve: 4.91 secs
Next OMRJIT with dmr_C based C code converted to IR:
a) Simple loop: 0.88 secs b) Fannkuchen(11): 4.6 secs c) matrix multiplication (1000): 2.28 secs d) mandelbrot: 2.02 secs e) sieve: 6.86 secs
Finally, c2mir backend:
a) Simple loop: 0.87 secs b) Fannkuchen(11): 5.87 secs c) matrix multiplication (1000): 2.4 secs d) mandelbrot: 2.5 secs e) sieve: 7.18 secs
Lastly Ravi interpreter.
a) Simple loop: 3.0 secs b) Fannkuchen(11): 14.76 secs c) matrix multiplication (1000): 8.26 secs d) mandelbrot: 7.38 secs e) sieve: 18.32 secs
All tests use type-annotations in Ravi. All tests were done on RHEL 7.7 running on Xeon X86-64.
binarytrees (21) 78.47 95.56 matmul1 11.3 13.72 matmul1_ravi 8.3 matmul1_ravi MIR 2.49 fannkuchen (11) 19.89 24.37 fannkuchen.ravi 15.56 fannkuchen.ravi MIR 5.43 sieve.lua 23.46 24.7 sieve.ravi 19.66 sieve.ravi MIR 8.52 mandel1.lua (4000) 10.29 12.18 mandel1.ravi 7.87 mandel1.ravi (MIR) 2.52