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 0 240 0.000
loops gen 2 2 2 358 0.005
fib_recursive gen 6 5 5 1,101 0.006
fib_iter gen 6 7 7 973 0.006
asdl_generated gen 7 9 9 517 0.013
scoped_resource gen 26 27 28 1,364 0.019
parse gen 24 24 22 958 0.025
containers gen 4 7 5 119 0.032
classes gen 1 0 1 35 0.037
gc_stack_roots gen 1 1 1 14 0.048
tuple_return_value gen 14 14 12 250 0.056
files gen 6 5 7 100 0.058
length gen 33 33 36 238 0.137
cartesian gen 67 74 67 390 0.171
escape gen 92 99 93 433 0.214
cgi gen 257 248 256 736 0.349
varargs gen 18 13 21 29 0.631
control_flow gen 134 181 135 147 0.913

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_recursive gen 0 1 1 9 0.000
loops gen 1 1 1 8 0.105
parse gen 1 3 3 9 0.112
gc_stack_roots gen 1 0 1 6 0.113
files gen 1 2 0 8 0.119
control_flow gen 1 1 1 7 0.143
tuple_return_value gen 1 2 3 7 0.143
classes gen 1 3 2 7 0.187
fib_iter gen 1 0 0 5 0.201
modules gen 1 1 1 6 0.229
containers gen 10 7 8 30 0.322
asdl_generated gen 3 1 1 8 0.372
cgi gen 3 4 4 7 0.428
length gen 6 3 3 9 0.660
escape gen 5 6 5 7 0.710
varargs gen 20 25 17 28 0.726
scoped_resource gen 4 5 3 4 0.988
cartesian gen 8 6 8 7 1.141

raw benchmark files