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 0 246 0.000
loops gen 1 3 1 348 0.002
fib_recursive gen 6 4 4 1,092 0.006
fib_iter gen 7 6 6 971 0.007
asdl_generated gen 8 7 6 522 0.015
scoped_resource gen 29 29 28 1,347 0.022
parse gen 23 24 23 964 0.024
containers gen 5 6 6 127 0.038
tuple_return_value gen 11 15 14 245 0.045
files gen 5 6 6 98 0.048
classes gen 3 2 1 34 0.080
gc_stack_roots gen 1 1 1 13 0.111
length gen 35 30 30 252 0.139
cartesian gen 69 74 70 390 0.177
escape gen 91 100 93 439 0.207
cgi gen 258 250 258 732 0.352
varargs gen 21 16 16 30 0.692
control_flow gen 135 176 136 143 0.944

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.5 4.3 4.5 11.5 0.39
gc_stack_roots gen 3.4 3.3 3.3 7.7 0.44
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
fib_recursive gen 3.4 3.7 3.7 7.6 0.45
scoped_resource gen 3.4 3.5 3.5 7.6 0.45
modules gen 3.5 3.4 3.5 7.9 0.45
cartesian gen 3.5 3.5 3.5 7.7 0.46
escape gen 3.5 3.4 3.4 7.7 0.46
length gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.5 3.7 3.5 7.5 0.47
cgi gen 3.7 3.5 3.5 7.6 0.48
control_flow gen 3.7 3.7 3.8 7.6 0.48
loops gen 3.7 3.5 3.5 7.6 0.48
tuple_return_value gen 3.7 3.8 3.8 7.6 0.48
parse gen 3.9 3.8 3.7 8.1 0.48
files gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.6 28.5 28.3 48.2 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
classes gen 0 1 2 10 0.000
fib_iter gen 0 1 1 7 0.000
fib_recursive gen 0 2 2 8 0.000
gc_stack_roots gen 0 0 0 8 0.000
scoped_resource gen 1 3 2 10 0.101
control_flow gen 1 2 1 9 0.111
loops gen 2 0 1 10 0.167
parse gen 2 3 2 12 0.170
files gen 2 1 1 8 0.237
asdl_generated gen 2 3 4 8 0.247
cgi gen 2 2 2 7 0.286
containers gen 9 8 7 26 0.334
modules gen 1 0 1 4 0.360
tuple_return_value gen 4 2 1 11 0.360
length gen 3 7 9 7 0.429
varargs gen 17 22 22 26 0.647
escape gen 7 5 5 10 0.700
cartesian gen 8 9 5 6 1.334

raw benchmark files