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 234 0.000
loops gen 1 3 3 364 0.002
fib_iter gen 5 6 6 957 0.005
fib_recursive gen 6 4 6 1,096 0.006
asdl_generated gen 7 8 8 511 0.014
scoped_resource gen 30 31 24 1,340 0.023
parse gen 24 23 20 968 0.025
files gen 5 6 7 102 0.047
containers gen 6 6 7 121 0.047
tuple_return_value gen 12 14 14 251 0.048
classes gen 2 2 1 35 0.050
gc_stack_roots gen 1 1 0 13 0.109
length gen 35 31 39 256 0.137
cartesian gen 74 74 69 388 0.190
escape gen 94 97 92 428 0.219
cgi gen 240 251 258 735 0.326
varargs gen 13 18 18 24 0.532
control_flow gen 135 178 135 151 0.897

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.2 4.5 4.3 11.5 0.37
asdl_generated gen 3.3 3.3 3.4 7.7 0.42
cgi gen 3.4 3.4 3.5 7.7 0.44
scoped_resource gen 3.4 3.7 3.5 7.7 0.44
gc_stack_roots gen 3.4 3.3 3.3 7.6 0.45
cartesian gen 3.5 3.5 3.5 7.6 0.47
escape gen 3.5 3.4 3.4 7.6 0.47
length gen 3.5 3.7 3.5 7.6 0.47
loops gen 3.5 3.7 3.7 7.6 0.47
fib_recursive gen 3.7 3.5 3.7 7.7 0.47
files gen 3.7 3.5 3.5 7.7 0.47
tuple_return_value gen 3.7 3.7 3.7 7.7 0.47
parse gen 3.8 3.8 3.7 8.0 0.48
fib_iter gen 3.7 3.4 3.7 7.6 0.48
modules gen 3.7 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.5 28.5 28.3 48.2 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
fib_recursive gen 0 2 0 6 0.000
gc_stack_roots gen 0 1 1 8 0.000
scoped_resource gen 0 1 6 9 0.000
parse gen 1 4 5 13 0.078
classes gen 1 1 2 8 0.113
modules gen 1 1 0 9 0.158
control_flow gen 1 1 1 6 0.166
containers gen 8 8 6 33 0.232
loops gen 2 0 0 6 0.283
tuple_return_value gen 3 2 1 9 0.333
asdl_generated gen 3 2 2 8 0.373
cartesian gen 3 6 6 8 0.374
files gen 2 1 0 4 0.482
escape gen 5 8 7 10 0.498
length gen 4 5 0 6 0.666
fib_iter gen 2 2 1 3 0.670
cgi gen 5 1 2 7 0.714
varargs gen 26 20 20 33 0.774

raw benchmark files