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 13 0.000
modules gen 0 1 1 235 0.000
loops gen 2 3 1 362 0.005
fib_recursive gen 6 6 4 1,113 0.005
fib_iter gen 6 8 6 972 0.006
asdl_generated gen 8 9 8 510 0.016
scoped_resource gen 28 27 29 1,370 0.020
parse gen 26 23 22 951 0.027
containers gen 4 6 4 125 0.031
tuple_return_value gen 14 15 12 257 0.055
files gen 7 3 7 99 0.069
classes gen 3 1 2 32 0.085
length gen 35 31 32 242 0.144
cartesian gen 70 72 66 392 0.179
escape gen 93 104 99 433 0.216
cgi gen 256 247 256 736 0.348
varargs gen 22 24 14 28 0.778
control_flow gen 136 179 135 154 0.881

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.3 11.5 0.39
gc_stack_roots gen 3.3 3.3 3.4 7.6 0.43
cartesian gen 3.4 3.5 3.5 7.7 0.44
asdl_generated gen 3.4 3.4 3.3 7.6 0.45
loops gen 3.5 3.8 3.7 7.7 0.46
parse gen 3.7 3.8 3.7 8.0 0.46
cgi gen 3.5 3.5 3.5 7.6 0.47
escape gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.5 3.5 3.5 7.6 0.47
modules gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.7 3.7 3.7 7.7 0.47
control_flow gen 3.7 3.8 3.7 7.6 0.48
files gen 3.7 3.7 3.7 7.6 0.48
length gen 3.7 3.5 3.5 7.6 0.48
tuple_return_value gen 3.7 3.8 3.7 7.6 0.48
containers gen 28.3 28.4 28.5 48.4 0.59
varargs gen 5.5 5.5 5.4 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 2 1 11 0.000
control_flow gen 0 1 1 4 0.000
files gen 0 3 0 6 0.000
parse gen 0 4 4 9 0.000
loops gen 1 1 1 8 0.106
fib_recursive gen 1 3 3 8 0.119
fib_iter gen 1 0 1 8 0.126
gc_stack_roots gen 1 0 1 8 0.180
modules gen 1 0 0 8 0.180
asdl_generated gen 2 1 2 7 0.291
containers gen 10 8 10 29 0.333
tuple_return_value gen 1 2 3 3 0.335
scoped_resource gen 3 5 2 7 0.427
length gen 4 5 6 8 0.497
cgi gen 5 6 3 10 0.498
varargs gen 17 14 24 28 0.601
cartesian gen 5 8 10 7 0.716
escape gen 6 2 2 7 0.852

raw benchmark files