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 2 2 1 367 0.005
fib_recursive gen 5 5 6 1,116 0.005
modules gen 1 1 1 232 0.006
fib_iter gen 7 6 6 963 0.007
asdl_generated gen 7 8 7 503 0.014
scoped_resource gen 27 29 25 1,368 0.020
parse gen 23 23 19 946 0.025
tuple_return_value gen 11 15 15 246 0.045
containers gen 6 6 7 125 0.048
files gen 6 6 5 102 0.056
gc_stack_roots gen 1 1 1 12 0.057
classes gen 3 1 2 32 0.085
length gen 37 34 35 243 0.151
cartesian gen 72 71 71 394 0.183
escape gen 89 96 91 436 0.203
cgi gen 254 245 257 742 0.342
varargs gen 15 20 26 26 0.587
control_flow gen 135 179 136 148 0.911

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.6 4.3 11.6 0.37
asdl_generated gen 3.4 3.4 3.3 7.6 0.45
cartesian gen 3.4 3.4 3.4 7.6 0.45
cgi gen 3.4 3.4 3.7 7.6 0.45
gc_stack_roots gen 3.4 3.3 3.4 7.6 0.45
scoped_resource gen 3.5 3.4 3.7 7.7 0.46
escape gen 3.5 3.5 3.4 7.6 0.47
loops gen 3.5 3.7 3.5 7.6 0.47
modules gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.7 3.5 3.5 7.7 0.47
length gen 3.7 3.7 3.5 7.7 0.47
parse gen 3.8 3.7 3.7 8.0 0.48
control_flow gen 3.7 3.7 3.8 7.6 0.48
fib_iter gen 3.7 3.5 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.6 0.50
containers gen 28.5 28.7 28.7 48.2 0.59
varargs gen 5.6 5.4 5.5 7.7 0.73

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 2 1 11 0.000
fib_iter gen 0 1 1 8 0.000
modules gen 0 1 0 7 0.000
control_flow gen 1 1 0 12 0.084
gc_stack_roots gen 1 0 1 8 0.086
fib_recursive gen 1 1 0 10 0.104
loops gen 1 1 2 8 0.106
files gen 1 1 2 7 0.137
length gen 2 2 3 9 0.220
parse gen 2 4 6 9 0.226
scoped_resource gen 3 2 5 13 0.233
containers gen 8 8 7 31 0.256
asdl_generated gen 3 2 3 10 0.295
tuple_return_value gen 6 2 0 10 0.598
cartesian gen 3 9 4 5 0.600
varargs gen 23 18 12 30 0.780
escape gen 10 8 6 6 1.659
cgi gen 7 6 3 4 1.746

raw benchmark files