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 12 0.000
modules gen 0 1 0 235 0.000
fib_recursive gen 5 6 4 1,090 0.005
loops gen 2 3 1 353 0.005
fib_iter gen 5 6 6 954 0.005
asdl_generated gen 8 8 9 510 0.015
scoped_resource gen 24 28 29 1,362 0.018
parse gen 23 25 20 940 0.025
containers gen 5 6 4 121 0.043
tuple_return_value gen 12 16 14 254 0.047
files gen 6 6 6 103 0.056
classes gen 3 3 0 30 0.089
length gen 36 33 36 240 0.148
cartesian gen 67 77 68 398 0.167
escape gen 93 99 94 430 0.216
cgi gen 255 250 256 730 0.349
varargs gen 21 16 19 29 0.721
control_flow gen 132 178 135 146 0.902

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.5 4.3 11.5 0.38
asdl_generated gen 3.4 3.4 3.4 7.7 0.44
gc_stack_roots gen 3.4 3.3 3.3 7.7 0.44
fib_iter gen 3.5 3.5 3.5 7.7 0.46
length gen 3.5 3.7 3.5 7.7 0.46
scoped_resource 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.4 3.5 7.6 0.47
loops gen 3.5 3.5 3.5 7.6 0.47
parse gen 3.8 3.7 3.8 8.1 0.47
fib_recursive gen 3.7 3.7 3.5 7.7 0.47
files gen 3.7 3.7 3.7 7.6 0.48
modules gen 3.7 3.5 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.7 7.6 0.50
tuple_return_value gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.7 28.4 28.7 48.2 0.59
varargs gen 5.5 5.5 5.6 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 0 3 13 0.000
loops gen 1 0 2 10 0.085
gc_stack_roots gen 1 0 1 8 0.167
fib_iter gen 2 1 1 11 0.182
files gen 1 1 1 5 0.190
fib_recursive gen 1 0 3 4 0.258
containers gen 8 9 9 32 0.260
asdl_generated gen 2 2 1 7 0.281
modules gen 1 1 1 5 0.283
parse gen 2 2 5 7 0.291
length gen 3 3 3 8 0.382
tuple_return_value gen 3 1 1 7 0.428
cgi gen 3 2 3 7 0.428
escape gen 4 6 4 9 0.446
scoped_resource gen 5 3 1 11 0.461
control_flow gen 4 1 0 7 0.570
varargs gen 18 23 20 28 0.640
cartesian gen 9 3 5 6 1.491

raw benchmark files