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
loops gen 1 2 3 398 0.002
fib_recursive gen 5 5 5 1,083 0.005
modules gen 1 0 1 233 0.006
fib_iter gen 7 7 7 988 0.007
asdl_generated gen 7 9 9 516 0.014
scoped_resource gen 27 29 31 1,383 0.020
parse gen 25 25 22 943 0.027
files gen 4 6 6 100 0.038
classes gen 1 3 2 33 0.040
containers gen 5 6 5 120 0.040
tuple_return_value gen 12 16 13 251 0.048
gc_stack_roots gen 1 0 1 13 0.102
length gen 34 32 32 243 0.138
cartesian gen 69 74 67 389 0.177
escape gen 93 100 96 433 0.215
cgi gen 261 242 242 736 0.355
varargs gen 18 19 18 27 0.669
control_flow gen 133 176 135 142 0.933

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.5 11.4 0.39
asdl_generated gen 3.3 3.3 3.4 7.6 0.43
cartesian gen 3.4 3.4 3.4 7.7 0.44
gc_stack_roots gen 3.4 3.5 3.4 7.7 0.44
length gen 3.5 3.4 3.5 7.7 0.46
scoped_resource gen 3.5 3.7 3.5 7.7 0.46
cgi gen 3.5 3.4 3.4 7.6 0.47
escape gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.5 3.7 3.5 7.6 0.47
modules gen 3.5 3.7 3.5 7.6 0.47
control_flow gen 3.7 3.8 3.8 7.9 0.47
parse gen 3.8 3.7 3.9 8.1 0.47
files gen 3.7 3.8 3.8 7.7 0.47
fib_recursive gen 3.7 3.5 3.5 7.6 0.48
loops gen 3.7 3.7 3.7 7.6 0.48
tuple_return_value gen 3.7 3.5 3.8 7.6 0.48
containers gen 28.5 28.4 28.5 48.2 0.59
varargs gen 5.6 5.5 5.5 7.6 0.74

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_iter gen 0 0 0 9 0.000
gc_stack_roots gen 0 1 0 7 0.000
modules gen 0 1 1 8 0.000
parse gen 0 2 3 7 0.000
cgi gen 1 4 5 9 0.111
classes gen 1 0 1 9 0.147
fib_recursive gen 1 1 1 4 0.259
loops gen 2 1 0 6 0.285
asdl_generated gen 3 1 1 10 0.300
containers gen 9 9 8 28 0.311
control_flow gen 3 2 1 8 0.373
scoped_resource gen 3 3 1 8 0.375
files gen 3 1 1 7 0.405
tuple_return_value gen 3 1 2 7 0.428
escape gen 5 6 4 10 0.495
length gen 5 4 7 8 0.636
varargs gen 20 19 20 29 0.692
cartesian gen 6 6 6 6 1.010

raw benchmark files