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 0 1 233 0.000
fib_recursive gen 6 5 6 1,082 0.006
loops gen 3 2 1 366 0.007
fib_iter gen 7 6 7 967 0.007
containers gen 1 8 4 119 0.008
asdl_generated gen 6 9 7 525 0.011
scoped_resource gen 25 29 26 1,371 0.018
parse gen 22 24 21 938 0.023
files gen 4 6 4 100 0.039
classes gen 1 2 1 29 0.045
tuple_return_value gen 13 15 12 262 0.050
gc_stack_roots gen 1 0 1 12 0.113
length gen 31 34 37 242 0.127
cartesian gen 71 76 68 387 0.182
escape gen 96 101 89 435 0.221
cgi gen 258 251 256 750 0.343
varargs gen 16 17 18 24 0.674
control_flow gen 134 177 131 145 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.2 4.5 11.6 0.38
asdl_generated gen 3.4 3.4 3.3 7.7 0.44
cartesian gen 3.4 3.4 3.5 7.7 0.44
cgi gen 3.4 3.5 3.4 7.6 0.45
escape gen 3.5 3.4 3.4 7.6 0.47
fib_iter gen 3.5 3.4 3.5 7.6 0.47
fib_recursive gen 3.5 3.5 3.5 7.6 0.47
gc_stack_roots gen 3.5 3.4 3.4 7.6 0.47
loops gen 3.5 3.5 3.5 7.6 0.47
modules gen 3.5 3.5 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.7 7.6 0.47
files gen 3.7 3.7 3.8 7.7 0.47
length gen 3.7 3.5 3.7 7.7 0.47
parse gen 3.8 3.8 3.8 8.0 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
tuple_return_value gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.5 28.6 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_iter gen 0 1 0 6 0.000
fib_recursive gen 0 1 0 8 0.000
gc_stack_roots gen 0 1 0 8 0.000
loops gen 0 1 1 7 0.000
classes gen 1 1 2 13 0.100
escape gen 1 4 9 7 0.143
modules gen 1 1 0 7 0.201
control_flow gen 2 2 4 7 0.286
tuple_return_value gen 2 2 3 7 0.286
cgi gen 3 0 4 9 0.333
containers gen 12 6 10 33 0.378
cartesian gen 3 4 7 8 0.378
files gen 3 1 3 7 0.415
parse gen 4 3 4 7 0.561
scoped_resource gen 5 3 4 8 0.630
asdl_generated gen 4 1 4 6 0.660
varargs gen 22 22 20 32 0.695
length gen 8 2 2 9 0.881

raw benchmark files