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 1 1 15 0.000
modules gen 0 0 0 235 0.000
loops gen 1 2 2 362 0.002
fib_recursive gen 4 5 6 1,112 0.004
fib_iter gen 6 6 7 970 0.006
asdl_generated gen 8 9 7 518 0.015
scoped_resource gen 28 30 23 1,359 0.020
parse gen 24 26 22 967 0.024
classes gen 1 1 1 33 0.027
containers gen 6 8 3 122 0.053
files gen 6 6 5 97 0.058
tuple_return_value gen 15 15 12 249 0.060
length gen 33 33 34 252 0.130
cartesian gen 68 68 69 397 0.171
escape gen 97 100 97 435 0.222
cgi gen 257 247 259 737 0.349
varargs gen 21 23 15 25 0.842
control_flow gen 131 182 136 155 0.843

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.5 4.6 11.5 0.38
asdl_generated gen 3.4 3.3 3.3 7.7 0.44
cartesian gen 3.4 3.5 3.5 7.7 0.44
gc_stack_roots gen 3.4 3.3 3.4 7.6 0.45
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
cgi gen 3.5 3.5 3.4 7.6 0.47
escape gen 3.5 3.5 3.5 7.6 0.47
length gen 3.5 3.7 3.7 7.6 0.47
modules gen 3.5 3.5 3.5 7.6 0.47
tuple_return_value gen 3.5 3.8 3.8 7.6 0.47
loops gen 3.7 3.7 3.5 7.7 0.47
parse gen 3.8 3.8 3.7 8.0 0.47
fib_iter gen 3.7 3.4 3.7 7.6 0.48
fib_recursive gen 3.7 3.7 3.7 7.6 0.48
files gen 3.7 3.7 3.8 7.6 0.48
control_flow gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.5 28.5 28.5 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
tuple_return_value gen 0 1 3 7 0.000
files gen 1 1 2 9 0.124
fib_iter gen 1 1 0 7 0.143
asdl_generated gen 2 1 3 12 0.165
classes gen 2 2 1 10 0.178
fib_recursive gen 2 1 0 8 0.224
modules gen 1 1 1 6 0.232
parse gen 2 1 3 8 0.256
containers gen 8 6 11 29 0.258
gc_stack_roots gen 1 0 0 5 0.264
loops gen 2 1 1 6 0.278
cgi gen 2 5 1 7 0.286
escape gen 3 5 1 10 0.301
scoped_resource gen 2 2 7 5 0.410
control_flow gen 4 1 0 8 0.502
varargs gen 17 15 24 32 0.533
length gen 5 4 5 7 0.704
cartesian gen 7 12 6 7 1.001

raw benchmark files