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
loops gen 1 2 3 360 0.002
modules gen 1 0 1 233 0.003
fib_recursive gen 5 4 5 1,085 0.005
fib_iter gen 5 7 7 955 0.006
asdl_generated gen 9 8 9 528 0.017
scoped_resource gen 26 31 26 1,362 0.019
parse gen 26 31 22 951 0.027
gc_stack_roots gen 1 0 1 18 0.039
containers gen 5 7 6 125 0.040
tuple_return_value gen 15 16 12 249 0.061
files gen 7 6 5 106 0.065
classes gen 3 1 3 32 0.084
length gen 33 32 34 242 0.138
cartesian gen 69 73 67 390 0.176
escape gen 96 101 93 434 0.220
cgi gen 259 251 259 736 0.352
varargs gen 18 20 16 28 0.634
control_flow gen 134 179 138 144 0.928

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.5 11.5 0.38
asdl_generated gen 3.3 3.4 3.4 7.7 0.42
cartesian gen 3.4 3.5 3.4 7.7 0.44
cgi gen 3.4 3.5 3.5 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
escape gen 3.5 3.5 3.5 7.7 0.46
modules gen 3.5 3.5 3.7 7.7 0.46
loops gen 3.5 3.4 3.7 7.6 0.47
control_flow gen 3.7 3.7 3.7 7.7 0.47
fib_iter gen 3.7 3.5 3.5 7.7 0.47
files gen 3.7 3.8 3.7 7.7 0.47
parse gen 3.8 3.9 3.8 8.0 0.48
fib_recursive gen 3.7 3.5 3.7 7.6 0.48
length gen 3.7 3.4 3.7 7.6 0.48
scoped_resource gen 3.7 3.5 3.4 7.6 0.48
tuple_return_value gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.5 28.4 28.5 48.2 0.59
varargs gen 5.5 5.4 5.4 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 1 0 12 0.000
files gen 0 1 2 3 0.000
parse gen 0 3 4 9 0.000
tuple_return_value gen 0 1 3 5 0.000
modules gen 1 1 1 10 0.071
asdl_generated gen 1 2 1 9 0.112
control_flow gen 1 0 1 7 0.142
cgi gen 1 2 1 7 0.143
fib_recursive gen 1 3 1 7 0.148
fib_iter gen 2 0 0 10 0.178
gc_stack_roots gen 1 1 1 3 0.222
loops gen 2 2 0 7 0.241
containers gen 9 8 8 29 0.313
escape gen 3 4 6 6 0.502
scoped_resource gen 5 0 5 9 0.555
varargs gen 21 19 23 29 0.714
length gen 5 5 4 6 0.842
cartesian gen 7 6 8 7 0.996

raw benchmark files