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 0 2 33 0.000
gc_stack_roots gen 0 1 1 15 0.000
fib_recursive gen 6 6 5 1,098 0.006
modules gen 1 0 1 235 0.006
fib_iter gen 6 5 7 974 0.006
loops gen 3 3 3 355 0.007
containers gen 2 8 5 133 0.015
asdl_generated gen 10 7 7 518 0.019
scoped_resource gen 28 31 28 1,448 0.019
parse gen 23 25 23 975 0.024
tuple_return_value gen 13 14 13 244 0.053
files gen 6 6 7 105 0.056
length gen 36 34 34 240 0.149
cartesian gen 75 76 72 388 0.193
escape gen 93 100 144 437 0.213
varargs gen 9 19 13 30 0.302
cgi gen 258 247 258 739 0.350
control_flow gen 135 179 135 145 0.932

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.5 4.3 11.6 0.38
asdl_generated gen 3.3 3.4 3.4 7.6 0.43
gc_stack_roots gen 3.4 3.3 3.4 7.7 0.44
cartesian gen 3.4 3.4 3.4 7.6 0.45
cgi gen 3.5 3.5 3.4 7.7 0.46
escape gen 3.5 3.5 3.4 7.7 0.46
fib_recursive gen 3.5 3.5 3.5 7.6 0.47
files gen 3.5 3.7 3.8 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
parse gen 3.8 3.8 3.8 8.1 0.47
length gen 3.7 3.5 3.5 7.7 0.47
loops gen 3.7 3.7 3.5 7.7 0.47
modules gen 3.7 3.4 3.5 7.7 0.47
tuple_return_value gen 3.7 3.7 3.7 7.7 0.47
fib_iter gen 3.7 3.5 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.4 5.5 5.5 7.6 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
asdl_generated gen 0 3 3 5 0.000
fib_recursive gen 0 0 1 6 0.000
loops gen 0 0 0 8 0.000
modules gen 0 1 0 4 0.000
control_flow gen 1 0 2 8 0.125
fib_iter gen 1 2 0 8 0.127
cgi gen 2 5 3 12 0.166
tuple_return_value gen 2 3 2 10 0.200
parse gen 2 2 2 9 0.225
files gen 1 1 0 4 0.241
gc_stack_roots gen 1 0 1 6 0.245
classes gen 3 3 1 11 0.249
scoped_resource gen 3 1 2 6 0.497
escape gen 5 5 4 10 0.501
length gen 3 3 4 6 0.509
containers gen 12 7 9 21 0.582
cartesian gen 5 4 3 7 0.716
varargs gen 29 20 25 27 1.082

raw benchmark files