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 12 0.000
modules gen 0 1 1 236 0.000
loops gen 2 2 1 361 0.005
fib_recursive gen 6 6 5 1,117 0.006
fib_iter gen 6 7 7 975 0.006
asdl_generated gen 7 10 8 516 0.014
scoped_resource gen 28 29 28 1,365 0.021
parse gen 23 20 24 958 0.025
containers gen 5 5 5 123 0.039
files gen 5 6 5 100 0.048
classes gen 2 1 1 34 0.053
tuple_return_value gen 14 13 12 246 0.057
length gen 32 34 34 240 0.135
cartesian gen 69 74 65 399 0.174
escape gen 95 100 89 434 0.219
cgi gen 259 251 256 736 0.352
varargs gen 19 14 15 26 0.747
control_flow gen 133 177 135 150 0.886

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.5 11.5 0.38
escape gen 3.4 3.5 3.4 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
cgi gen 3.5 3.5 3.4 7.7 0.46
loops gen 3.5 3.4 3.5 7.7 0.46
asdl_generated gen 3.5 3.3 3.4 7.6 0.47
cartesian gen 3.5 3.5 3.4 7.6 0.47
fib_iter gen 3.5 3.7 3.7 7.6 0.47
length gen 3.5 3.7 3.5 7.6 0.47
modules gen 3.5 3.5 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.7 3.7 3.7 7.7 0.47
parse gen 3.8 3.7 3.8 8.0 0.48
control_flow gen 3.7 3.8 3.8 7.6 0.48
files gen 3.8 3.8 3.8 7.6 0.50
tuple_return_value gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.5 28.5 28.3 48.4 0.59
varargs gen 5.5 5.5 5.4 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 0 1 7 0.000
classes gen 1 2 2 10 0.091
fib_iter gen 1 0 0 10 0.101
tuple_return_value gen 1 4 3 7 0.142
gc_stack_roots gen 1 0 0 9 0.160
loops gen 1 1 2 5 0.166
modules gen 1 0 1 7 0.198
parse gen 2 7 1 8 0.245
containers gen 9 10 9 31 0.280
cgi gen 2 2 4 7 0.286
scoped_resource gen 2 2 2 7 0.288
files gen 2 1 2 6 0.321
asdl_generated gen 3 0 2 8 0.374
length gen 5 2 4 10 0.492
control_flow gen 2 2 1 4 0.500
varargs gen 19 25 24 31 0.626
escape gen 5 5 8 5 1.002
cartesian gen 6 6 10 6 1.005

raw benchmark files