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 0 1 13 0.000
modules gen 0 0 2 243 0.000
fib_recursive gen 5 5 5 1,071 0.005
fib_iter gen 6 6 6 1,099 0.006
loops gen 3 2 1 354 0.007
asdl_generated gen 7 6 8 508 0.014
scoped_resource gen 25 25 23 1,379 0.018
containers gen 3 4 6 120 0.024
parse gen 24 27 20 950 0.025
classes gen 1 1 3 34 0.027
files gen 5 7 4 99 0.049
tuple_return_value gen 14 15 13 245 0.057
length gen 37 35 36 246 0.150
cartesian gen 70 73 72 391 0.180
escape gen 100 99 94 421 0.237
cgi gen 256 251 256 752 0.341
varargs gen 12 13 14 28 0.430
control_flow gen 136 178 134 152 0.897

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
cgi gen 0 1 4 6 0.000
control_flow gen 0 1 2 6 0.000
escape gen 0 6 5 12 0.000
loops gen 0 1 2 7 0.000
fib_iter gen 1 1 1 9 0.114
tuple_return_value gen 1 2 2 8 0.125
classes gen 2 2 0 10 0.185
gc_stack_roots gen 1 1 1 7 0.198
parse gen 2 0 5 10 0.204
fib_recursive gen 1 1 1 5 0.206
files gen 2 0 3 9 0.216
modules gen 1 1 0 6 0.243
length gen 2 2 3 8 0.249
asdl_generated gen 3 4 2 11 0.270
containers gen 11 10 8 33 0.321
scoped_resource gen 5 6 8 8 0.625
cartesian gen 5 5 4 7 0.716
varargs gen 26 25 24 28 0.931

raw benchmark files