mycpp Code Generation

Measure the speedup from mycpp, and the resource usage.

Source code: oils/mycpp/examples

User Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
gc_stack_roots gen 0 0 1 11 0.000
modules gen 0 0 1 240 0.000
fib_recursive gen 4 6 6 1,103 0.004
fib_iter gen 6 7 5 962 0.006
loops gen 2 2 1 354 0.007
asdl_generated gen 9 8 9 525 0.017
scoped_resource gen 27 30 28 1,369 0.020
parse gen 22 26 25 966 0.023
containers gen 6 7 9 127 0.047
tuple_return_value gen 14 15 13 248 0.056
files gen 6 6 6 100 0.058
classes gen 2 2 2 30 0.061
length gen 35 34 38 244 0.141
cartesian gen 74 75 73 392 0.189
escape gen 92 102 96 440 0.209
cgi gen 258 247 257 726 0.355
varargs gen 15 14 14 33 0.452
control_flow gen 135 177 131 148 0.907

Max Resident Set Size (MB)

Lower ratios are better. We use MB (powers of 10), not MiB (powers of 2).

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 4.2 4.3 4.3 11.5 0.37
escape gen 3.4 3.5 3.5 7.7 0.44
asdl_generated gen 3.4 3.4 3.3 7.6 0.45
gc_stack_roots gen 3.4 3.3 3.4 7.6 0.45
loops gen 3.5 3.5 3.5 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
cartesian gen 3.5 3.5 3.4 7.6 0.47
cgi gen 3.7 3.5 3.5 7.7 0.47
files gen 3.7 3.8 3.7 7.7 0.47
tuple_return_value gen 3.7 3.7 3.7 7.7 0.47
parse gen 3.8 3.7 3.8 8.0 0.48
fib_iter gen 3.7 3.5 3.7 7.6 0.48
fib_recursive gen 3.7 3.5 3.5 7.6 0.48
length gen 3.7 3.5 3.7 7.6 0.48
modules gen 3.7 3.7 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.4 28.5 48.4 0.59
varargs gen 5.5 5.5 5.5 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
loops gen 0 1 1 7 0.000
classes gen 1 1 1 13 0.070
asdl_generated gen 1 2 1 9 0.110
files gen 1 1 1 7 0.138
gc_stack_roots gen 1 1 0 10 0.142
fib_iter gen 1 0 2 7 0.145
tuple_return_value gen 1 2 2 6 0.166
control_flow gen 2 1 4 8 0.250
fib_recursive gen 2 0 0 7 0.254
cgi gen 3 6 3 10 0.300
parse gen 3 1 0 10 0.304
containers gen 8 8 5 26 0.308
scoped_resource gen 3 1 2 9 0.331
length gen 4 3 1 8 0.493
cartesian gen 3 5 2 6 0.500
modules gen 1 1 0 2 0.706
escape gen 5 4 2 7 0.713
varargs gen 23 24 24 23 0.994

raw benchmark files