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 4 5 5 1,095 0.004
modules gen 1 0 1 241 0.006
loops gen 3 2 1 360 0.007
fib_iter gen 7 6 7 955 0.007
scoped_resource gen 21 30 28 1,375 0.016
asdl_generated gen 8 6 8 510 0.016
parse gen 23 25 25 951 0.024
classes gen 1 0 1 34 0.027
containers gen 6 7 6 119 0.050
tuple_return_value gen 15 15 14 248 0.061
files gen 7 7 7 98 0.072
gc_stack_roots gen 1 1 1 15 0.097
length gen 34 31 34 241 0.139
cartesian gen 70 71 68 399 0.175
escape gen 94 98 95 444 0.211
cgi gen 255 252 244 719 0.355
varargs gen 20 19 23 29 0.702
control_flow gen 135 181 135 149 0.905

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.3 11.5 0.38
asdl_generated gen 3.3 3.4 3.4 7.6 0.43
gc_stack_roots gen 3.3 3.4 3.3 7.6 0.43
cgi gen 3.4 3.5 3.5 7.7 0.44
cartesian gen 3.4 3.4 3.4 7.6 0.45
escape gen 3.4 3.5 3.5 7.6 0.45
fib_recursive gen 3.5 3.5 3.5 7.7 0.46
modules gen 3.5 3.5 3.5 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
length gen 3.5 3.7 3.5 7.6 0.47
loops gen 3.5 3.4 3.5 7.6 0.47
control_flow gen 3.7 3.8 3.7 7.7 0.47
files gen 3.7 3.7 3.8 7.7 0.47
parse gen 3.8 3.7 3.9 8.0 0.48
fib_iter gen 3.7 3.5 3.4 7.6 0.48
tuple_return_value gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.4 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
fib_iter gen 0 1 0 10 0.000
files gen 0 0 0 9 0.000
gc_stack_roots gen 0 1 0 6 0.000
loops gen 0 1 2 8 0.000
modules gen 0 1 0 5 0.000
tuple_return_value gen 0 2 1 8 0.000
fib_recursive gen 2 2 1 10 0.180
classes gen 2 3 2 10 0.187
asdl_generated gen 2 4 2 9 0.222
containers gen 8 8 8 34 0.236
control_flow gen 1 1 1 4 0.248
parse gen 3 2 1 11 0.279
length gen 5 6 6 10 0.493
varargs gen 18 20 15 29 0.632
escape gen 5 7 5 7 0.712
cartesian gen 6 9 7 8 0.750
scoped_resource gen 9 2 2 12 0.762
cgi gen 7 1 3 7 1.000

raw benchmark files