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 2 364 0.002
modules gen 1 0 0 237 0.003
fib_recursive gen 5 6 5 1,101 0.005
fib_iter gen 6 6 6 970 0.006
asdl_generated gen 8 9 8 507 0.016
scoped_resource gen 27 28 28 1,340 0.020
parse gen 23 23 25 938 0.024
containers gen 4 6 5 121 0.032
tuple_return_value gen 10 15 15 250 0.040
files gen 6 6 6 105 0.056
classes gen 3 0 2 34 0.079
gc_stack_roots gen 1 0 1 11 0.128
length gen 34 28 32 244 0.139
cartesian gen 69 76 62 395 0.173
escape gen 94 96 92 429 0.219
cgi gen 255 251 243 754 0.338
varargs gen 19 23 8 22 0.876
control_flow gen 135 175 134 149 0.907

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.3 4.2 11.5 0.38
asdl_generated gen 3.3 3.4 3.4 7.7 0.42
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
cartesian gen 3.5 3.4 3.4 7.6 0.47
cgi gen 3.5 3.5 3.3 7.6 0.47
escape gen 3.5 3.4 3.5 7.6 0.47
fib_iter gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.5 3.5 3.7 7.6 0.47
length gen 3.7 3.7 3.5 7.7 0.47
parse gen 3.8 3.8 3.8 8.0 0.48
loops gen 3.7 3.5 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.8 7.6 0.50
files gen 3.8 3.8 3.7 7.6 0.50
tuple_return_value gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.4 28.4 48.2 0.59
varargs gen 5.5 5.5 5.5 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 3 1 9 0.000
control_flow gen 0 3 2 7 0.000
gc_stack_roots gen 0 1 0 10 0.000
modules gen 1 1 1 7 0.104
files gen 1 1 1 9 0.108
fib_iter gen 1 1 1 8 0.126
asdl_generated gen 2 1 2 11 0.182
loops gen 2 0 1 8 0.215
scoped_resource gen 3 3 2 10 0.303
containers gen 10 8 9 30 0.324
fib_recursive gen 1 0 1 3 0.343
parse gen 3 4 0 8 0.371
cgi gen 4 2 4 10 0.400
escape gen 3 9 6 6 0.499
tuple_return_value gen 5 2 0 9 0.564
varargs gen 19 16 31 34 0.567
length gen 4 8 6 6 0.664
cartesian gen 7 4 12 6 1.158

raw benchmark files