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
loops gen 1 3 1 372 0.002
fib_recursive gen 5 4 5 1,102 0.005
fib_iter gen 6 7 6 970 0.006
modules gen 1 1 0 230 0.006
asdl_generated gen 8 9 10 503 0.016
scoped_resource gen 31 31 28 1,378 0.022
parse gen 22 23 24 975 0.023
tuple_return_value gen 9 16 14 250 0.036
containers gen 6 6 6 123 0.049
classes gen 2 1 1 35 0.051
files gen 7 7 7 102 0.069
gc_stack_roots gen 1 0 0 12 0.114
length gen 36 33 30 252 0.144
cartesian gen 69 73 72 396 0.174
escape gen 93 99 93 430 0.216
cgi gen 255 251 258 741 0.344
varargs gen 14 13 16 31 0.456
control_flow gen 135 176 139 142 0.951

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.5 11.5 0.39
asdl_generated gen 3.3 3.4 3.4 7.7 0.42
escape gen 3.4 3.4 3.5 7.7 0.44
cgi gen 3.4 3.5 3.4 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.3 7.6 0.45
fib_iter gen 3.5 3.4 3.5 7.7 0.46
cartesian gen 3.5 3.4 3.5 7.6 0.47
fib_recursive gen 3.5 3.5 3.5 7.6 0.47
files gen 3.5 3.7 3.8 7.6 0.47
length gen 3.5 3.5 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
control_flow gen 3.7 3.8 3.8 7.7 0.47
loops gen 3.7 3.8 3.5 7.7 0.47
modules gen 3.7 3.5 3.5 7.7 0.47
parse gen 3.9 3.8 3.8 8.1 0.48
tuple_return_value gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.4 28.5 28.5 48.2 0.59
varargs gen 5.5 5.5 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 3 1 10 0.000
files gen 0 0 0 4 0.000
gc_stack_roots gen 0 1 1 8 0.000
modules gen 0 0 1 8 0.000
scoped_resource gen 0 0 2 7 0.000
fib_recursive gen 1 2 1 9 0.116
fib_iter gen 1 0 1 8 0.125
classes gen 1 2 1 7 0.127
asdl_generated gen 2 1 0 9 0.220
containers gen 7 8 7 28 0.253
loops gen 2 0 2 6 0.278
length gen 3 3 8 9 0.336
parse gen 3 5 1 7 0.435
cgi gen 3 4 2 6 0.500
escape gen 5 6 4 6 0.834
varargs gen 24 25 22 25 0.969
tuple_return_value gen 6 1 1 6 0.996
cartesian gen 7 7 3 6 1.163

raw benchmark files