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
modules gen 0 0 0 229 0.000
loops gen 1 2 2 354 0.002
fib_recursive gen 4 5 5 1,115 0.004
fib_iter gen 6 6 6 953 0.006
asdl_generated gen 9 8 10 512 0.018
scoped_resource gen 29 27 24 1,388 0.021
parse gen 23 23 23 956 0.025
classes gen 1 2 1 34 0.039
tuple_return_value gen 13 16 14 250 0.052
gc_stack_roots gen 1 0 0 12 0.056
containers gen 7 8 4 127 0.057
files gen 7 5 7 96 0.070
length gen 31 33 38 246 0.128
cartesian gen 73 76 72 444 0.164
escape gen 96 102 92 435 0.220
cgi gen 258 250 257 784 0.329
varargs gen 14 19 14 29 0.482
control_flow gen 136 177 134 145 0.943

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.2 4.3 11.6 0.38
asdl_generated gen 3.4 3.3 3.3 7.6 0.45
cgi gen 3.4 3.4 3.4 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
cartesian gen 3.5 3.5 3.4 7.7 0.46
escape gen 3.5 3.7 3.4 7.6 0.47
fib_recursive gen 3.5 3.5 3.7 7.6 0.47
length gen 3.5 3.7 3.7 7.6 0.47
modules gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.7 3.5 3.5 7.7 0.47
parse gen 3.8 3.8 3.8 8.0 0.48
fib_iter gen 3.7 3.5 3.4 7.6 0.48
files gen 3.7 3.8 3.7 7.6 0.48
loops gen 3.7 3.7 3.5 7.6 0.48
tuple_return_value gen 3.7 3.8 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
containers gen 28.5 28.5 28.5 48.2 0.59
varargs gen 5.5 5.6 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 2 2 9 0.000
files gen 0 2 0 9 0.000
gc_stack_roots gen 1 1 1 8 0.083
fib_iter gen 1 1 1 9 0.112
modules gen 1 1 1 9 0.152
classes gen 1 1 1 8 0.164
asdl_generated gen 1 2 0 6 0.168
fib_recursive gen 2 1 1 9 0.198
parse gen 2 4 3 10 0.204
containers gen 6 6 9 26 0.238
scoped_resource gen 3 4 6 12 0.248
tuple_return_value gen 2 1 1 8 0.251
escape gen 3 2 6 10 0.299
cartesian gen 2 4 5 6 0.333
loops gen 2 1 0 5 0.338
length gen 7 3 1 10 0.713
cgi gen 3 0 2 4 0.749
varargs gen 24 19 25 27 0.887

raw benchmark files