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 1 0 1 233 0.003
fib_recursive gen 6 6 4 1,136 0.005
fib_iter gen 6 7 5 963 0.006
loops gen 3 2 1 354 0.007
asdl_generated gen 8 7 8 507 0.016
scoped_resource gen 26 32 28 1,386 0.019
parse gen 23 25 25 954 0.024
containers gen 4 4 6 121 0.035
tuple_return_value gen 10 16 12 247 0.041
files gen 6 6 5 100 0.058
gc_stack_roots gen 1 1 1 11 0.067
classes gen 3 2 2 36 0.075
length gen 33 35 34 251 0.131
cartesian gen 71 73 70 401 0.177
escape gen 94 100 96 437 0.214
cgi gen 254 250 260 738 0.344
varargs gen 17 17 18 27 0.621
control_flow gen 136 180 136 147 0.925

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.2 4.3 4.3 11.5 0.37
asdl_generated gen 3.3 3.5 3.4 7.6 0.43
loops gen 3.4 3.7 3.7 7.7 0.44
cartesian gen 3.4 3.4 3.5 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.3 7.6 0.45
parse gen 3.7 3.7 3.7 8.1 0.45
escape gen 3.5 3.4 3.5 7.7 0.46
cgi gen 3.5 3.4 3.5 7.6 0.47
fib_recursive gen 3.5 3.7 3.7 7.6 0.47
modules gen 3.5 3.7 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
control_flow gen 3.7 3.8 3.8 7.7 0.47
fib_iter gen 3.7 3.4 3.5 7.6 0.48
length gen 3.7 3.5 3.5 7.6 0.48
files gen 3.8 3.7 3.8 7.7 0.49
tuple_return_value gen 3.8 3.7 3.7 7.7 0.49
containers gen 28.3 28.5 28.4 48.2 0.59
varargs gen 5.6 5.5 5.4 7.7 0.73

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 1 1 8 0.000
control_flow gen 0 1 1 9 0.000
fib_recursive gen 0 0 2 8 0.000
loops gen 0 1 2 9 0.000
modules gen 1 1 0 11 0.065
gc_stack_roots gen 1 0 0 10 0.073
fib_iter gen 1 0 2 8 0.126
files gen 1 1 2 7 0.138
asdl_generated gen 2 3 2 9 0.219
parse gen 3 2 1 10 0.294
containers gen 9 11 7 30 0.316
cartesian gen 4 7 6 10 0.401
scoped_resource gen 4 0 2 9 0.435
tuple_return_value gen 5 1 3 9 0.556
varargs gen 22 22 20 31 0.700
escape gen 5 5 4 6 0.830
cgi gen 6 2 2 5 1.198
length gen 6 1 4 5 1.199

raw benchmark files