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 5 5 6 1,076 0.005
fib_iter gen 6 8 7 944 0.006
modules gen 1 0 1 238 0.006
loops gen 3 3 2 358 0.007
asdl_generated gen 9 7 9 503 0.019
scoped_resource gen 26 31 27 1,347 0.019
parse gen 23 23 22 951 0.024
classes gen 1 2 1 33 0.028
containers gen 5 4 2 124 0.040
files gen 5 6 6 101 0.048
tuple_return_value gen 18 13 15 246 0.075
gc_stack_roots gen 1 0 0 12 0.120
length gen 33 34 32 244 0.135
cartesian gen 71 76 72 390 0.181
escape gen 95 100 96 435 0.218
cgi gen 259 250 258 722 0.358
varargs gen 20 18 15 26 0.785
control_flow gen 135 184 136 147 0.914

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.5 0.39
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
asdl_generated gen 3.4 3.3 3.4 7.6 0.45
cartesian gen 3.4 3.5 3.5 7.6 0.45
cgi gen 3.4 3.5 3.5 7.6 0.45
scoped_resource gen 3.5 3.7 3.7 7.7 0.46
parse gen 3.7 3.8 3.9 8.0 0.46
escape gen 3.5 3.4 3.5 7.6 0.47
loops gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.5 3.5 3.5 7.5 0.47
fib_recursive gen 3.7 3.4 3.5 7.7 0.47
length gen 3.7 3.5 3.5 7.7 0.47
modules gen 3.7 3.7 3.7 7.6 0.48
tuple_return_value gen 3.7 3.8 3.8 7.6 0.48
files gen 3.8 3.7 3.7 7.7 0.49
control_flow gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.3 28.5 28.5 48.4 0.59
varargs gen 5.5 5.5 5.4 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
gc_stack_roots gen 0 1 1 9 0.000
loops gen 0 1 1 5 0.000
modules gen 0 1 0 5 0.000
tuple_return_value gen 0 4 0 7 0.000
fib_recursive gen 1 1 0 9 0.117
control_flow gen 2 1 2 10 0.200
classes gen 2 1 2 9 0.205
asdl_generated gen 1 3 2 5 0.207
fib_iter gen 2 0 1 9 0.211
parse gen 3 4 4 12 0.248
containers gen 9 11 12 30 0.301
files gen 2 1 1 6 0.324
length gen 6 3 7 11 0.546
varargs gen 18 21 24 31 0.593
cgi gen 3 2 3 5 0.600
scoped_resource gen 5 1 5 8 0.614
escape gen 5 6 3 8 0.619
cartesian gen 5 4 3 8 0.633

raw benchmark files