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_iter gen 4 6 6 969 0.005
loops gen 2 3 1 361 0.005
fib_recursive gen 6 6 6 1,112 0.006
modules gen 1 0 1 234 0.006
asdl_generated gen 10 9 15 524 0.019
scoped_resource gen 27 30 29 1,392 0.020
parse gen 24 24 23 967 0.025
containers gen 6 8 6 125 0.047
gc_stack_roots gen 1 0 1 14 0.051
tuple_return_value gen 14 14 13 246 0.057
files gen 6 6 5 95 0.061
classes gen 3 1 2 33 0.079
length gen 35 32 30 246 0.142
cartesian gen 73 71 68 448 0.163
escape gen 98 98 93 423 0.232
cgi gen 258 238 257 736 0.350
varargs gen 18 11 18 30 0.593
control_flow gen 133 178 135 145 0.920

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.5 4.5 11.5 0.39
gc_stack_roots gen 3.4 3.4 3.5 7.6 0.45
escape gen 3.5 3.7 3.5 7.7 0.46
length gen 3.5 3.5 3.7 7.7 0.46
modules gen 3.5 3.5 3.5 7.7 0.46
parse gen 3.7 3.8 3.8 8.0 0.46
asdl_generated gen 3.5 3.4 3.3 7.6 0.47
cartesian gen 3.5 3.5 3.5 7.6 0.47
cgi gen 3.5 3.4 3.4 7.6 0.47
fib_iter gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.7 3.7 3.5 7.6 0.48
loops gen 3.7 3.5 3.5 7.6 0.48
tuple_return_value gen 3.7 3.8 3.8 7.6 0.48
files gen 3.8 3.8 3.8 7.7 0.49
control_flow gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.4 28.3 28.3 48.1 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
asdl_generated gen 0 1 1 4 0.000
classes gen 0 1 1 10 0.000
fib_recursive gen 0 0 0 7 0.000
modules gen 0 1 0 5 0.000
loops gen 1 0 2 10 0.085
files gen 1 1 2 11 0.088
gc_stack_roots gen 1 1 0 7 0.102
parse gen 1 3 2 9 0.113
tuple_return_value gen 1 2 2 8 0.125
fib_iter gen 3 1 1 10 0.266
control_flow gen 2 1 1 7 0.284
containers gen 8 7 7 26 0.303
scoped_resource gen 3 2 1 10 0.303
cartesian gen 2 9 8 6 0.334
length gen 3 5 8 8 0.375
escape gen 3 7 5 8 0.375
cgi gen 2 1 4 4 0.499
varargs gen 21 27 21 26 0.799

raw benchmark files