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
modules gen 0 1 0 238 0.000
fib_recursive gen 5 6 5 1,095 0.005
fib_iter gen 5 6 6 976 0.005
loops gen 2 1 3 368 0.007
asdl_generated gen 7 6 9 513 0.013
scoped_resource gen 25 32 27 1,368 0.018
parse gen 24 25 22 954 0.026
containers gen 5 3 6 127 0.039
tuple_return_value gen 13 16 13 248 0.054
classes gen 2 1 2 32 0.058
files gen 6 6 5 101 0.058
gc_stack_roots gen 1 1 1 14 0.102
length gen 30 31 37 251 0.119
cartesian gen 72 74 97 391 0.184
escape gen 89 99 95 431 0.206
cgi gen 257 245 255 741 0.347
varargs gen 18 15 20 30 0.603
control_flow gen 136 180 134 142 0.960

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
gc_stack_roots gen 3.3 3.3 3.4 7.6 0.43
modules gen 3.4 3.5 3.5 7.7 0.44
asdl_generated gen 3.4 3.3 3.4 7.6 0.45
cartesian gen 3.4 3.5 3.4 7.6 0.45
parse gen 3.7 3.9 3.8 8.1 0.45
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
escape gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.5 3.5 3.7 7.6 0.47
length gen 3.5 3.4 3.7 7.6 0.47
cgi gen 3.5 3.7 3.5 7.5 0.47
loops gen 3.7 3.5 3.7 7.7 0.47
files gen 3.7 3.7 3.7 7.6 0.48
tuple_return_value gen 3.7 3.8 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
containers gen 28.5 28.4 28.5 48.1 0.59
varargs gen 5.5 5.5 5.5 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 7 0.000
loops gen 0 2 0 5 0.000
classes gen 1 2 1 11 0.084
parse gen 1 2 3 10 0.098
control_flow gen 1 0 2 10 0.100
fib_recursive gen 1 0 1 8 0.130
files gen 1 1 2 7 0.141
fib_iter gen 2 1 1 9 0.196
tuple_return_value gen 2 0 2 7 0.290
containers gen 9 11 8 27 0.329
cartesian gen 4 6 4 9 0.443
modules gen 1 1 1 3 0.462
scoped_resource gen 6 1 3 10 0.591
cgi gen 3 6 4 5 0.600
varargs gen 20 23 19 26 0.773
escape gen 8 9 3 9 0.888
asdl_generated gen 3 4 1 3 0.986
length gen 9 5 2 8 1.124

raw benchmark files