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
classes gen 0 1 0 30 0.000
fib_recursive gen 5 5 4 1,061 0.005
modules gen 1 0 0 207 0.005
loops gen 2 2 2 309 0.007
fib_iter gen 5 5 5 739 0.007
asdl_generated gen 8 9 9 513 0.016
scoped_resource gen 28 29 29 1,217 0.023
parse gen 23 23 21 909 0.025
containers gen 5 7 8 116 0.044
tuple_return_value gen 13 14 14 221 0.060
files gen 6 5 6 91 0.066
gc_stack_roots gen 1 1 1 10 0.110
length gen 29 29 31 225 0.131
cartesian gen 68 72 67 368 0.184
escape gen 81 92 94 388 0.209
cgi gen 185 178 186 655 0.282
varargs gen 14 18 15 23 0.601
control_flow gen 126 165 123 136 0.924

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.6 4.5 11.6 0.38
asdl_generated gen 3.4 3.4 3.4 7.7 0.44
gc_stack_roots gen 3.4 3.5 3.4 7.6 0.45
escape gen 3.5 3.4 3.5 7.9 0.45
parse gen 3.7 3.9 3.9 8.0 0.46
cartesian gen 3.5 3.5 3.5 7.7 0.46
cgi gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.4 7.6 0.47
control_flow gen 3.7 3.9 3.9 7.9 0.47
length gen 3.7 3.5 3.5 7.7 0.47
fib_iter gen 3.7 3.7 3.8 7.6 0.48
fib_recursive gen 3.7 3.5 3.5 7.6 0.48
loops gen 3.7 3.7 3.7 7.6 0.48
files gen 3.8 3.8 3.7 7.7 0.49
modules gen 3.8 3.5 3.5 7.7 0.49
tuple_return_value gen 3.9 3.7 3.7 7.7 0.51
containers gen 28.5 28.5 28.8 48.3 0.59
varargs gen 5.6 5.5 5.6 7.6 0.74

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 4 2 5 0.000
fib_recursive gen 0 0 1 5 0.000
files gen 0 1 0 3 0.000
gc_stack_roots gen 0 0 0 6 0.000
loops gen 0 1 0 7 0.000
modules gen 0 1 1 5 0.000
scoped_resource gen 1 2 0 7 0.145
tuple_return_value gen 1 2 1 5 0.190
parse gen 1 3 3 5 0.199
cgi gen 1 0 0 4 0.250
classes gen 2 1 2 8 0.289
cartesian gen 1 4 3 3 0.331
fib_iter gen 1 2 1 3 0.345
containers gen 7 5 4 15 0.478
asdl_generated gen 1 1 0 2 0.526
length gen 3 3 1 5 0.589
varargs gen 10 6 9 13 0.760
escape gen 4 2 2 3 1.321

raw benchmark files