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 1 1 1 233 0.003
fib_recursive gen 5 5 6 1,093 0.005
fib_iter gen 5 7 7 968 0.005
loops gen 3 2 3 371 0.007
asdl_generated gen 9 6 8 535 0.017
scoped_resource gen 27 29 22 1,347 0.020
parse gen 23 26 24 959 0.024
classes gen 1 3 2 36 0.025
containers gen 5 6 6 122 0.041
gc_stack_roots gen 1 1 1 14 0.050
tuple_return_value gen 15 15 11 250 0.060
files gen 7 7 5 99 0.068
length gen 35 34 37 244 0.144
cartesian gen 69 70 69 395 0.175
escape gen 95 110 94 424 0.225
cgi gen 253 250 254 737 0.343
control_flow gen 134 177 135 148 0.907
varargs gen 22 14 15 23 0.965

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.4 0.39
asdl_generated gen 3.3 3.4 3.3 7.6 0.43
cartesian gen 3.4 3.5 3.5 7.7 0.44
escape gen 3.4 3.5 3.5 7.7 0.44
fib_recursive gen 3.4 3.5 3.7 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
loops gen 3.5 3.8 3.7 7.7 0.46
modules gen 3.5 3.4 3.7 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
cgi gen 3.5 3.4 3.4 7.6 0.47
length gen 3.5 3.7 3.8 7.6 0.47
tuple_return_value gen 3.5 3.7 3.8 7.6 0.47
parse gen 3.8 3.8 3.9 8.1 0.47
fib_iter gen 3.7 3.7 3.5 7.6 0.48
files gen 3.7 3.7 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
containers gen 28.5 28.7 28.7 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
files gen 0 0 2 9 0.000
loops gen 0 1 0 8 0.000
tuple_return_value gen 0 2 4 9 0.000
modules gen 1 0 0 10 0.074
fib_recursive gen 1 2 0 10 0.089
gc_stack_roots gen 1 0 1 7 0.100
control_flow gen 1 2 1 9 0.111
parse gen 2 1 2 12 0.163
asdl_generated gen 1 4 2 5 0.199
classes gen 2 0 1 9 0.203
scoped_resource gen 3 2 8 10 0.297
containers gen 9 9 8 29 0.312
cgi gen 3 3 2 9 0.333
fib_iter gen 2 0 0 6 0.338
length gen 3 3 2 8 0.379
escape gen 4 4 5 9 0.446
varargs gen 16 25 24 34 0.475
cartesian gen 4 9 7 8 0.501

raw benchmark files