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
fib_recursive gen 6 5 5 1,118 0.006
modules gen 1 1 1 235 0.006
fib_iter gen 6 7 7 965 0.006
loops gen 2 3 1 359 0.007
asdl_generated gen 9 9 8 516 0.017
scoped_resource gen 26 28 29 1,360 0.019
parse gen 22 24 21 953 0.023
classes gen 1 2 3 34 0.026
containers gen 5 8 5 125 0.041
files gen 5 5 6 100 0.048
tuple_return_value gen 13 15 14 246 0.052
gc_stack_roots gen 1 0 1 13 0.104
length gen 32 34 36 241 0.131
cartesian gen 69 75 72 394 0.174
escape gen 96 101 94 423 0.226
cgi gen 257 248 260 852 0.302
varargs gen 16 20 18 26 0.619
control_flow gen 133 181 133 148 0.901

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.5 4.3 11.6 0.38
gc_stack_roots gen 3.4 3.5 3.3 7.9 0.43
asdl_generated gen 3.4 3.3 3.4 7.7 0.44
cartesian gen 3.5 3.4 3.4 7.7 0.46
fib_recursive gen 3.5 3.7 3.5 7.7 0.46
loops gen 3.5 3.5 3.7 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
modules gen 3.5 3.5 3.5 7.6 0.47
tuple_return_value gen 3.5 3.7 3.7 7.6 0.47
parse gen 3.8 3.7 3.8 8.0 0.48
cgi gen 3.7 3.5 3.5 7.6 0.48
escape gen 3.7 3.4 3.5 7.6 0.48
fib_iter gen 3.7 3.5 3.5 7.6 0.48
length gen 3.7 3.7 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
containers gen 28.4 28.5 28.4 48.2 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
fib_recursive gen 0 1 1 9 0.000
gc_stack_roots gen 0 1 1 7 0.000
loops gen 0 0 2 9 0.000
modules gen 0 0 0 8 0.000
fib_iter gen 1 0 0 8 0.126
control_flow gen 1 1 2 7 0.142
asdl_generated gen 1 1 2 6 0.184
classes gen 2 1 0 8 0.219
cgi gen 2 4 1 9 0.222
tuple_return_value gen 2 2 1 8 0.267
parse gen 3 3 4 10 0.291
files gen 2 2 1 6 0.320
containers gen 8 6 9 25 0.330
scoped_resource gen 4 3 1 8 0.489
escape gen 7 5 5 11 0.642
varargs gen 22 19 20 30 0.738
cartesian gen 7 5 4 8 0.869
length gen 7 2 3 8 0.893

raw benchmark files