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 1 236 0.000
loops gen 1 2 2 352 0.002
fib_recursive gen 5 6 6 1,088 0.005
fib_iter gen 7 5 6 965 0.007
asdl_generated gen 9 8 9 525 0.017
scoped_resource gen 27 29 28 1,373 0.020
parse gen 24 22 21 944 0.026
classes gen 2 1 2 37 0.049
containers gen 6 4 3 120 0.049
files gen 6 6 7 102 0.056
tuple_return_value gen 14 17 14 247 0.058
gc_stack_roots gen 1 1 1 12 0.117
length gen 37 35 35 241 0.154
cartesian gen 68 74 71 398 0.172
escape gen 94 101 95 431 0.218
cgi gen 256 252 258 736 0.348
varargs gen 23 21 22 26 0.888
control_flow gen 139 175 134 148 0.945

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.3 4.3 11.5 0.39
asdl_generated gen 3.3 3.4 3.4 7.5 0.44
gc_stack_roots gen 3.4 3.4 3.3 7.6 0.45
cgi gen 3.5 3.4 3.5 7.7 0.46
escape gen 3.5 3.4 3.4 7.7 0.46
parse gen 3.7 3.8 3.8 8.0 0.46
cartesian gen 3.5 3.5 3.4 7.6 0.47
fib_iter gen 3.5 3.5 3.7 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
loops gen 3.7 3.7 3.5 7.7 0.47
modules gen 3.7 3.5 3.5 7.7 0.47
files gen 3.7 3.8 3.7 7.6 0.48
scoped_resource gen 3.7 3.5 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
tuple_return_value gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.3 28.3 28.5 48.4 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
control_flow gen 0 5 2 8 0.000
fib_iter gen 0 2 1 7 0.000
gc_stack_roots gen 0 0 1 9 0.000
parse gen 1 5 5 12 0.085
fib_recursive gen 1 0 0 8 0.130
files gen 1 1 0 7 0.137
tuple_return_value gen 1 0 1 7 0.146
classes gen 1 2 1 6 0.146
loops gen 2 1 1 10 0.168
modules gen 1 1 1 8 0.178
asdl_generated gen 1 2 1 5 0.198
containers gen 8 10 11 32 0.247
length gen 2 2 3 7 0.286
scoped_resource gen 3 4 2 8 0.381
varargs gen 15 18 16 30 0.502
escape gen 6 4 5 10 0.599
cgi gen 6 3 1 9 0.667
cartesian gen 7 6 4 7 1.004

raw benchmark files