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 0 1 17 0.000
loops gen 1 3 1 363 0.002
modules gen 1 1 0 234 0.003
fib_iter gen 6 6 6 1,223 0.005
fib_recursive gen 6 5 6 1,094 0.006
asdl_generated gen 9 8 8 521 0.017
scoped_resource gen 26 28 28 1,349 0.019
parse gen 25 24 22 957 0.027
classes gen 1 2 3 34 0.027
containers gen 4 9 5 130 0.031
tuple_return_value gen 13 15 15 250 0.052
files gen 7 6 6 97 0.073
length gen 33 35 37 253 0.129
cartesian gen 70 71 65 397 0.177
escape gen 92 101 89 439 0.209
cgi gen 261 242 256 748 0.349
varargs gen 14 19 16 31 0.459
control_flow gen 135 178 130 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.5 4.3 4.3 11.5 0.39
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.3 7.6 0.45
cartesian gen 3.5 3.5 3.4 7.7 0.46
escape gen 3.5 3.4 3.5 7.6 0.47
fib_recursive gen 3.5 3.5 3.7 7.6 0.47
loops gen 3.5 3.5 3.7 7.6 0.47
modules gen 3.5 3.7 3.5 7.6 0.47
cgi gen 3.7 3.5 3.5 7.7 0.47
fib_iter gen 3.7 3.7 3.5 7.6 0.48
length gen 3.7 3.5 3.5 7.6 0.48
scoped_resource gen 3.7 3.5 3.7 7.6 0.48
tuple_return_value gen 3.7 3.7 3.7 7.6 0.48
parse gen 3.9 3.7 3.8 8.1 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
files gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.3 28.5 28.7 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
control_flow gen 0 1 5 10 0.000
fib_recursive gen 0 1 0 10 0.000
files gen 0 1 1 9 0.000
parse gen 0 3 3 9 0.000
modules gen 1 0 1 9 0.078
cgi gen 1 4 3 11 0.091
asdl_generated gen 1 2 2 11 0.100
fib_iter gen 1 1 1 9 0.112
loops gen 2 0 1 9 0.187
classes gen 2 1 0 9 0.203
tuple_return_value gen 2 2 0 9 0.224
gc_stack_roots gen 1 1 0 4 0.345
containers gen 10 5 9 25 0.397
scoped_resource gen 4 4 3 7 0.567
cartesian gen 5 9 10 8 0.619
escape gen 6 4 10 7 0.857
varargs gen 24 19 22 27 0.903
length gen 6 1 2 5 1.190

raw benchmark files