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 0 0 17 0.000
loops gen 1 3 3 352 0.002
fib_recursive gen 5 5 5 1,077 0.005
modules gen 1 1 0 238 0.006
fib_iter gen 7 7 5 952 0.007
asdl_generated gen 9 7 10 559 0.016
scoped_resource gen 27 30 31 1,358 0.020
parse gen 24 24 21 958 0.025
classes gen 1 1 3 33 0.041
containers gen 6 10 5 126 0.046
tuple_return_value gen 12 14 14 245 0.049
files gen 6 7 6 97 0.060
length gen 32 29 34 244 0.133
cartesian gen 70 74 70 396 0.177
escape gen 85 102 93 426 0.201
cgi gen 257 252 257 726 0.353
varargs gen 12 11 16 33 0.369
control_flow gen 135 177 132 148 0.914

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.5 11.6 0.37
asdl_generated gen 3.3 3.3 3.3 7.6 0.43
cgi gen 3.4 3.5 3.5 7.6 0.45
escape gen 3.5 3.5 3.4 7.7 0.46
gc_stack_roots gen 3.5 3.3 3.3 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_iter gen 3.5 3.5 3.5 7.6 0.47
length gen 3.5 3.5 3.5 7.6 0.47
loops gen 3.5 3.5 3.7 7.6 0.47
modules gen 3.5 3.5 3.7 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.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
files gen 3.8 3.7 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.5 28.5 48.1 0.60
varargs gen 5.5 5.4 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_iter gen 0 0 2 7 0.000
modules gen 0 1 1 6 0.000
files gen 1 0 1 9 0.106
fib_recursive gen 1 2 1 9 0.115
control_flow gen 1 2 3 8 0.125
classes gen 1 2 0 10 0.134
asdl_generated gen 1 3 0 8 0.138
loops gen 2 0 0 10 0.169
parse gen 1 3 4 4 0.254
containers gen 8 4 9 29 0.268
cgi gen 3 0 4 11 0.273
tuple_return_value gen 3 2 1 7 0.428
gc_stack_roots gen 1 1 1 3 0.457
length gen 6 8 5 9 0.675
scoped_resource gen 4 2 3 5 0.785
cartesian gen 5 6 5 6 0.834
varargs gen 26 27 23 24 1.098
escape gen 11 6 5 7 1.580

raw benchmark files