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 0 0 234 0.000
fib_recursive gen 5 5 5 1,089 0.005
fib_iter gen 6 7 6 968 0.006
loops gen 2 2 1 367 0.007
asdl_generated gen 7 9 9 512 0.014
scoped_resource gen 24 30 29 1,347 0.018
parse gen 24 24 24 947 0.026
containers gen 4 4 4 133 0.031
classes gen 1 0 1 33 0.041
gc_stack_roots gen 1 0 0 13 0.053
tuple_return_value gen 14 15 12 248 0.056
files gen 6 6 7 98 0.059
length gen 35 31 38 237 0.147
cartesian gen 72 73 68 395 0.184
escape gen 93 103 93 425 0.220
cgi gen 255 250 253 718 0.355
varargs gen 13 12 17 28 0.465
control_flow gen 134 177 136 142 0.940

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.5 11.5 0.39
gc_stack_roots gen 3.3 3.4 3.4 7.7 0.42
asdl_generated gen 3.4 3.4 3.3 7.6 0.45
fib_iter gen 3.4 3.5 3.7 7.6 0.45
cgi gen 3.5 3.5 3.5 7.7 0.46
loops gen 3.5 3.5 3.5 7.7 0.46
cartesian gen 3.5 3.5 3.4 7.6 0.47
fib_recursive gen 3.5 3.4 3.5 7.6 0.47
parse gen 3.8 3.8 3.7 8.1 0.47
length gen 3.7 3.5 3.7 7.7 0.47
escape gen 3.7 3.4 3.5 7.6 0.48
files gen 3.7 3.8 3.7 7.6 0.48
modules 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.8 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.5 28.5 28.5 48.2 0.59
varargs gen 5.5 5.4 5.4 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
loops gen 0 2 1 4 0.000
gc_stack_roots gen 1 1 1 8 0.086
tuple_return_value gen 1 2 3 11 0.090
parse gen 1 3 2 9 0.113
files gen 1 2 0 8 0.121
fib_iter gen 1 0 1 7 0.144
classes gen 1 3 2 9 0.150
fib_recursive gen 1 1 1 6 0.172
length gen 3 5 1 11 0.272
modules gen 1 1 1 5 0.278
control_flow gen 2 2 1 7 0.285
containers gen 9 10 9 27 0.347
asdl_generated gen 3 1 1 7 0.429
cgi gen 4 1 6 9 0.445
cartesian gen 4 7 7 5 0.803
varargs gen 25 27 22 28 0.893
scoped_resource gen 6 2 2 6 1.009
escape gen 5 2 8 2 2.511

raw benchmark files