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
modules gen 0 1 1 237 0.000
loops gen 1 2 2 353 0.002
fib_recursive gen 5 4 6 1,095 0.004
fib_iter gen 7 5 7 968 0.007
asdl_generated gen 10 7 8 513 0.020
scoped_resource gen 28 30 27 1,362 0.021
parse gen 25 23 23 947 0.026
tuple_return_value gen 11 15 13 247 0.045
files gen 5 5 6 101 0.050
classes gen 2 2 1 33 0.055
containers gen 8 7 7 121 0.064
length gen 33 32 35 259 0.127
gc_stack_roots gen 1 0 1 10 0.139
cartesian gen 64 74 68 439 0.147
escape gen 93 96 93 428 0.217
cgi gen 254 251 258 732 0.348
varargs gen 23 18 16 29 0.804
control_flow gen 138 196 139 150 0.920

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.3 4.5 4.5 11.5 0.38
asdl_generated gen 3.3 3.1 3.4 7.7 0.42
gc_stack_roots gen 3.3 3.3 3.3 7.6 0.43
cartesian gen 3.4 3.5 3.4 7.6 0.45
cgi gen 3.4 3.5 3.5 7.6 0.45
escape gen 3.4 3.5 3.5 7.6 0.45
fib_recursive gen 3.4 3.7 3.5 7.6 0.45
length gen 3.4 3.5 3.7 7.6 0.45
parse gen 3.7 3.8 3.8 8.1 0.45
fib_iter gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.4 3.5 7.6 0.47
loops gen 3.7 3.7 3.5 7.7 0.47
tuple_return_value gen 3.7 3.8 3.8 7.7 0.47
control_flow gen 3.7 3.7 3.7 7.6 0.48
files gen 3.7 3.7 3.7 7.6 0.48
modules gen 3.7 3.5 3.7 7.6 0.48
containers gen 28.7 28.5 28.5 48.4 0.59
varargs gen 5.4 5.4 5.5 7.6 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
asdl_generated gen 0 3 2 8 0.000
control_flow gen 0 1 1 6 0.000
fib_iter gen 0 2 0 10 0.000
gc_stack_roots gen 0 1 1 10 0.000
classes gen 1 1 2 10 0.091
parse gen 1 4 2 10 0.099
fib_recursive gen 2 2 0 11 0.165
containers gen 7 7 8 31 0.219
modules gen 1 0 0 6 0.239
files gen 2 2 1 7 0.290
loops gen 2 2 1 5 0.347
cgi gen 4 0 2 10 0.401
scoped_resource gen 2 2 3 5 0.402
escape gen 4 10 6 9 0.445
tuple_return_value gen 4 2 2 8 0.500
varargs gen 15 21 22 28 0.543
length gen 6 5 4 5 1.196
cartesian gen 11 6 7 9 1.213

raw benchmark files