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 1 39 0.000
gc_stack_roots gen 0 0 1 10 0.000
loops gen 1 3 3 361 0.003
fib_recursive gen 5 6 5 1,115 0.005
modules gen 1 1 1 238 0.006
fib_iter gen 6 7 7 960 0.006
asdl_generated gen 7 10 7 526 0.013
scoped_resource gen 26 30 24 1,462 0.018
parse gen 23 25 23 954 0.024
tuple_return_value gen 12 16 15 249 0.048
containers gen 7 4 4 124 0.056
files gen 7 5 7 100 0.069
length gen 34 36 35 241 0.141
cartesian gen 70 70 71 433 0.161
escape gen 91 101 91 431 0.211
cgi gen 253 250 256 737 0.343
varargs gen 14 20 16 26 0.548
control_flow gen 135 177 136 145 0.926

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.3 11.6 0.37
asdl_generated gen 3.4 3.4 3.4 7.7 0.44
cartesian gen 3.4 3.4 3.5 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
cgi gen 3.5 3.4 3.5 7.7 0.46
escape gen 3.5 3.4 3.5 7.7 0.46
fib_iter gen 3.5 3.4 3.5 7.6 0.47
fib_recursive gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
length gen 3.5 3.7 3.5 7.5 0.47
control_flow gen 3.7 3.8 3.7 7.7 0.47
parse gen 3.8 3.8 3.9 8.0 0.47
files gen 3.7 3.8 3.8 7.6 0.48
loops gen 3.7 3.5 3.7 7.6 0.48
modules gen 3.7 3.5 3.7 7.6 0.48
tuple_return_value gen 3.7 3.7 3.8 7.6 0.48
containers gen 28.4 28.5 28.5 48.4 0.59
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
files gen 0 2 0 9 0.000
modules gen 0 1 1 6 0.000
fib_iter gen 1 0 0 8 0.126
gc_stack_roots gen 1 1 1 10 0.134
loops gen 1 0 0 8 0.158
control_flow gen 1 1 0 6 0.167
fib_recursive gen 1 0 1 6 0.174
containers gen 7 10 10 28 0.248
parse gen 3 2 3 9 0.327
asdl_generated gen 3 0 3 9 0.330
tuple_return_value gen 3 1 0 8 0.375
cartesian gen 5 8 5 10 0.498
scoped_resource gen 4 2 6 8 0.505
length gen 5 0 4 9 0.555
classes gen 3 0 2 4 0.658
varargs gen 24 18 22 32 0.763
escape gen 8 4 6 10 0.801
cgi gen 7 2 3 8 0.874

raw benchmark files