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
gc_stack_roots gen 0 1 1 11 0.000
loops gen 2 2 1 355 0.005
fib_iter gen 5 6 6 977 0.006
fib_recursive gen 6 4 5 1,101 0.006
modules gen 1 1 0 241 0.006
asdl_generated gen 8 9 9 509 0.016
scoped_resource gen 27 29 28 1,360 0.020
parse gen 22 24 25 962 0.023
containers gen 5 5 4 124 0.040
classes gen 1 3 1 32 0.042
tuple_return_value gen 12 14 13 241 0.052
files gen 7 6 6 99 0.070
length gen 35 33 34 240 0.145
cartesian gen 72 76 71 395 0.181
escape gen 92 102 92 440 0.210
cgi gen 258 247 254 718 0.360
varargs gen 12 12 17 25 0.472
control_flow gen 135 176 133 146 0.926

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.5 11.5 0.38
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
fib_recursive gen 3.4 3.5 3.7 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
cgi gen 3.5 3.5 3.5 7.7 0.46
escape gen 3.5 3.5 3.5 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
cartesian gen 3.5 3.4 3.4 7.6 0.47
fib_iter gen 3.5 3.7 3.5 7.6 0.47
length gen 3.5 3.7 3.7 7.6 0.47
loops gen 3.5 3.5 3.7 7.6 0.47
modules gen 3.5 3.5 3.7 7.6 0.47
parse gen 3.8 3.7 3.7 8.1 0.47
files gen 3.8 3.8 3.7 7.7 0.49
tuple_return_value gen 3.8 3.7 3.8 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.2 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 2 3 6 0.000
fib_recursive gen 0 2 2 7 0.000
files gen 0 1 1 8 0.000
modules gen 0 0 1 5 0.000
classes gen 1 0 2 10 0.134
gc_stack_roots gen 1 0 0 10 0.142
loops gen 1 1 1 6 0.144
fib_iter gen 2 1 1 9 0.200
scoped_resource gen 3 3 2 12 0.249
asdl_generated gen 2 1 1 8 0.253
tuple_return_value gen 3 3 2 10 0.288
containers gen 9 10 10 29 0.311
parse gen 3 3 1 9 0.326
length gen 4 4 5 10 0.397
cartesian gen 4 4 4 8 0.503
escape gen 6 2 6 9 0.671
cgi gen 5 5 7 7 0.713
varargs gen 27 27 22 31 0.856

raw benchmark files