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
fib_recursive gen 4 4 5 1,076 0.004
fib_iter gen 6 6 5 1,177 0.005
modules gen 1 1 0 236 0.006
loops gen 3 2 2 364 0.007
asdl_generated gen 9 8 10 509 0.017
scoped_resource gen 27 30 28 1,356 0.020
parse gen 22 24 26 974 0.023
gc_stack_roots gen 1 0 0 13 0.054
classes gen 2 1 1 32 0.055
tuple_return_value gen 14 16 14 252 0.056
containers gen 7 7 4 123 0.060
files gen 7 5 6 103 0.066
length gen 36 31 36 242 0.149
cartesian gen 66 73 69 398 0.165
escape gen 93 99 95 430 0.216
cgi gen 258 250 255 724 0.356
varargs gen 13 15 14 27 0.469
control_flow gen 136 179 133 145 0.939

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.3 4.5 4.3 11.5 0.38
asdl_generated gen 3.3 3.4 3.3 7.7 0.42
escape gen 3.4 3.4 3.5 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
loops gen 3.5 3.7 3.7 7.7 0.46
cartesian gen 3.5 3.5 3.4 7.6 0.47
cgi gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.5 3.5 3.7 7.6 0.47
modules gen 3.5 3.7 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.4 7.6 0.47
parse gen 3.8 3.9 3.9 8.0 0.48
fib_recursive gen 3.7 3.5 3.5 7.6 0.48
files gen 3.7 3.8 3.7 7.6 0.48
length gen 3.7 3.7 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.5 0.51
containers gen 28.5 28.4 28.6 48.4 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
files gen 0 2 1 8 0.000
loops gen 0 1 1 9 0.000
modules gen 0 0 1 9 0.000
classes gen 1 2 2 10 0.088
gc_stack_roots gen 1 1 1 8 0.088
fib_iter gen 1 1 2 7 0.143
asdl_generated gen 1 2 0 6 0.165
tuple_return_value gen 1 1 1 6 0.167
control_flow gen 2 0 2 9 0.221
containers gen 6 7 10 27 0.231
cgi gen 2 1 4 8 0.250
length gen 2 5 3 8 0.251
parse gen 3 3 0 11 0.267
fib_recursive gen 2 2 1 5 0.360
scoped_resource gen 3 2 2 6 0.508
varargs gen 26 24 24 29 0.873
escape gen 6 6 4 6 0.998
cartesian gen 9 7 6 6 1.495

raw benchmark files