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
classes gen 0 3 3 30 0.000
gc_stack_roots gen 0 1 1 12 0.000
modules gen 1 0 0 225 0.003
loops gen 2 2 3 367 0.005
fib_recursive gen 6 5 4 1,087 0.006
fib_iter gen 6 6 5 950 0.006
asdl_generated gen 8 8 10 511 0.015
scoped_resource gen 27 30 25 1,366 0.020
parse gen 23 23 23 947 0.024
tuple_return_value gen 12 15 12 251 0.048
containers gen 7 9 4 124 0.056
files gen 7 5 6 101 0.067
length gen 36 32 37 239 0.151
cartesian gen 68 75 73 391 0.174
escape gen 90 106 87 435 0.206
cgi gen 256 250 256 735 0.349
varargs gen 14 18 22 28 0.492
control_flow gen 134 177 134 150 0.894

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.3 7.6 0.43
cartesian gen 3.4 3.5 3.4 7.7 0.44
fib_iter gen 3.4 3.5 3.7 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
escape gen 3.5 3.4 3.4 7.7 0.46
fib_recursive gen 3.5 3.5 3.5 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
tuple_return_value gen 3.5 3.7 3.8 7.7 0.46
parse gen 3.7 3.9 3.8 8.0 0.46
cgi gen 3.5 3.4 3.4 7.6 0.47
modules gen 3.5 3.5 3.5 7.6 0.47
control_flow gen 3.7 3.7 3.7 7.6 0.48
length gen 3.7 3.5 3.5 7.6 0.48
loops gen 3.7 3.4 3.5 7.6 0.48
files gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.5 28.4 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
fib_recursive gen 0 1 3 8 0.000
files gen 0 2 1 5 0.000
modules gen 1 1 1 9 0.082
loops gen 1 1 0 8 0.105
fib_iter gen 1 1 2 7 0.144
gc_stack_roots gen 1 0 0 9 0.155
classes gen 3 0 0 16 0.166
containers gen 7 5 10 29 0.238
control_flow gen 2 2 3 8 0.250
cgi gen 3 3 4 12 0.250
length gen 2 4 2 8 0.251
asdl_generated gen 2 2 0 7 0.283
parse gen 4 4 2 11 0.358
scoped_resource gen 3 2 5 8 0.370
tuple_return_value gen 3 1 3 5 0.599
cartesian gen 7 5 3 10 0.700
varargs gen 25 20 16 29 0.848
escape gen 9 2 11 10 0.896

raw benchmark files