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 1 12 0.000
fib_recursive gen 4 4 5 1,101 0.004
modules gen 1 1 1 232 0.006
fib_iter gen 6 6 5 980 0.006
loops gen 3 2 3 360 0.007
asdl_generated gen 8 9 9 507 0.016
scoped_resource gen 27 29 27 1,350 0.020
parse gen 26 25 23 944 0.027
containers gen 4 4 4 127 0.030
tuple_return_value gen 12 15 14 241 0.050
files gen 7 4 5 100 0.067
classes gen 3 2 1 36 0.073
length gen 34 32 32 245 0.140
cartesian gen 69 74 64 395 0.175
escape gen 97 102 94 432 0.225
cgi gen 251 251 245 743 0.338
varargs gen 23 21 16 33 0.700
control_flow gen 135 175 137 146 0.924

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.5 4.5 11.5 0.39
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
cartesian gen 3.5 3.4 3.5 7.7 0.46
escape gen 3.5 3.5 3.5 7.7 0.46
cgi gen 3.5 3.5 3.5 7.6 0.47
gc_stack_roots gen 3.5 3.5 3.4 7.6 0.47
scoped_resource gen 3.5 3.7 3.4 7.6 0.47
fib_iter gen 3.5 3.4 3.5 7.5 0.47
loops gen 3.7 3.5 3.4 7.7 0.47
tuple_return_value gen 3.7 3.7 3.5 7.7 0.47
parse gen 3.8 3.9 3.8 8.0 0.48
fib_recursive gen 3.7 3.5 3.5 7.6 0.48
files gen 3.7 3.8 3.8 7.6 0.48
length gen 3.7 3.5 3.7 7.6 0.48
modules gen 3.7 3.5 3.5 7.6 0.48
control_flow gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.4 28.5 28.5 48.2 0.59
varargs gen 5.6 5.5 5.2 7.6 0.74

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 1 2 6 0.000
control_flow gen 0 4 1 8 0.000
files gen 0 3 2 7 0.000
loops gen 0 1 0 7 0.000
modules gen 0 1 0 8 0.000
parse gen 0 2 2 10 0.000
fib_iter gen 1 1 2 10 0.100
gc_stack_roots gen 1 1 1 8 0.173
fib_recursive gen 2 2 1 9 0.197
asdl_generated gen 2 1 2 8 0.249
tuple_return_value gen 3 2 1 10 0.301
scoped_resource gen 3 2 3 9 0.337
containers gen 10 10 9 21 0.459
length gen 4 5 5 8 0.501
escape gen 3 3 5 5 0.601
varargs gen 15 17 23 23 0.655
cartesian gen 6 4 9 9 0.668
cgi gen 7 2 3 10 0.699

raw benchmark files