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 1 0 9 0.000
loops gen 1 3 1 356 0.002
fib_recursive gen 6 5 5 1,127 0.006
modules gen 1 0 1 234 0.006
fib_iter gen 6 6 6 969 0.006
asdl_generated gen 9 8 9 515 0.017
scoped_resource gen 26 29 30 1,371 0.019
parse gen 26 25 25 960 0.027
containers gen 4 5 8 125 0.032
tuple_return_value gen 13 13 12 250 0.052
classes gen 2 1 2 31 0.057
files gen 6 7 3 98 0.060
length gen 37 34 33 287 0.129
cartesian gen 68 75 71 389 0.174
escape gen 94 97 90 423 0.222
cgi gen 259 251 259 729 0.356
varargs gen 15 18 19 25 0.599
control_flow gen 139 178 133 148 0.940

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.3 4.5 11.5 0.38
gc_stack_roots gen 3.3 3.4 3.4 7.6 0.43
asdl_generated gen 3.4 3.4 3.4 7.7 0.44
fib_recursive 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.5 3.5 3.5 7.6 0.47
escape gen 3.5 3.5 3.5 7.6 0.47
loops gen 3.5 3.7 3.5 7.6 0.47
scoped_resource gen 3.5 3.4 3.5 7.6 0.47
control_flow gen 3.7 3.8 3.8 7.6 0.48
fib_iter gen 3.7 3.7 3.7 7.6 0.48
files gen 3.7 3.8 3.7 7.6 0.48
length gen 3.7 3.5 3.5 7.6 0.48
modules gen 3.7 3.5 3.4 7.6 0.48
parse gen 3.9 3.8 3.7 8.1 0.48
tuple_return_value gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.4 28.5 48.2 0.59
varargs gen 5.5 5.4 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_recursive gen 0 1 1 7 0.000
modules gen 0 1 0 8 0.000
parse gen 0 2 1 10 0.000
classes gen 1 2 1 12 0.073
cgi gen 1 1 2 13 0.077
fib_iter gen 1 1 1 11 0.092
asdl_generated gen 1 2 1 10 0.099
files gen 1 0 3 9 0.107
gc_stack_roots gen 1 0 1 11 0.120
control_flow gen 1 1 2 7 0.143
loops gen 2 0 2 9 0.186
tuple_return_value gen 2 3 3 7 0.284
length gen 2 3 6 7 0.285
containers gen 10 9 5 28 0.356
scoped_resource gen 4 2 0 10 0.397
escape gen 3 6 8 6 0.500
varargs gen 23 20 19 31 0.740
cartesian gen 7 5 6 7 0.995

raw benchmark files