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 6 7 1,096 0.004
loops gen 2 2 1 354 0.005
fib_iter gen 6 8 7 983 0.006
modules gen 1 0 1 242 0.006
scoped_resource gen 26 30 28 1,352 0.020
asdl_generated gen 11 9 8 531 0.020
parse gen 23 25 24 954 0.024
containers gen 4 6 6 132 0.031
tuple_return_value gen 15 15 15 251 0.058
classes gen 2 3 1 33 0.060
files gen 7 7 7 99 0.074
gc_stack_roots gen 2 0 1 11 0.138
length gen 40 35 37 243 0.163
cartesian gen 68 73 70 395 0.173
escape gen 95 104 96 439 0.216
cgi gen 256 254 263 721 0.356
varargs gen 16 14 17 29 0.561
control_flow gen 134 178 135 142 0.944

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.7 0.44
cartesian gen 3.4 3.4 3.4 7.6 0.45
gc_stack_roots gen 3.4 3.5 3.3 7.6 0.45
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
cgi gen 3.5 3.5 3.4 7.6 0.47
fib_recursive gen 3.5 3.7 3.5 7.6 0.47
parse gen 3.8 3.7 3.8 8.1 0.47
loops gen 3.7 3.7 3.5 7.7 0.47
fib_iter gen 3.7 3.7 3.7 7.6 0.48
length gen 3.7 3.5 3.5 7.6 0.48
modules gen 3.7 3.5 3.5 7.6 0.48
tuple_return_value gen 3.8 3.7 3.5 7.7 0.49
control_flow gen 3.8 3.8 3.8 7.6 0.50
files gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.4 28.5 28.3 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
asdl_generated gen 0 2 4 8 0.000
files gen 0 1 1 8 0.000
gc_stack_roots gen 0 2 0 10 0.000
length gen 0 3 3 5 0.000
modules gen 0 1 1 9 0.000
classes gen 1 0 2 13 0.076
loops gen 1 2 1 10 0.093
tuple_return_value gen 1 3 1 7 0.140
control_flow gen 2 1 1 13 0.154
fib_iter gen 2 0 1 10 0.194
fib_recursive gen 2 1 0 9 0.208
cgi gen 5 0 0 13 0.383
containers gen 10 9 9 26 0.391
parse gen 3 2 3 7 0.434
scoped_resource gen 4 4 4 6 0.651
varargs gen 23 26 24 28 0.836
escape gen 7 2 7 6 1.174
cartesian gen 8 9 5 5 1.586

raw benchmark files