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
gc_stack_roots gen 0 0 1 13 0.000
modules gen 0 1 1 233 0.000
loops gen 1 3 2 354 0.002
fib_iter gen 4 6 6 961 0.005
fib_recursive gen 6 5 5 1,096 0.006
asdl_generated gen 9 10 8 521 0.017
scoped_resource gen 28 30 26 1,369 0.021
parse gen 23 26 21 946 0.025
containers gen 6 6 4 127 0.048
classes gen 2 2 2 32 0.056
files gen 6 6 6 101 0.057
tuple_return_value gen 15 16 14 242 0.063
length gen 35 32 31 241 0.143
escape gen 90 98 93 433 0.207
cartesian gen 95 72 67 435 0.219
cgi gen 256 250 259 749 0.341
varargs gen 19 15 22 25 0.772
control_flow gen 133 178 134 147 0.908

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.2 4.5 11.5 0.39
asdl_generated gen 3.4 3.3 3.4 7.7 0.44
gc_stack_roots gen 3.4 3.5 3.4 7.7 0.44
cgi gen 3.5 3.5 3.5 7.7 0.46
escape gen 3.5 3.4 3.5 7.7 0.46
loops gen 3.5 3.4 3.7 7.7 0.46
cartesian gen 3.5 3.5 3.5 7.6 0.47
length gen 3.5 3.5 3.4 7.6 0.47
scoped_resource gen 3.5 3.7 3.5 7.6 0.47
fib_iter gen 3.7 3.7 3.5 7.7 0.47
parse gen 3.8 3.9 3.7 8.0 0.48
fib_recursive gen 3.7 3.5 3.7 7.6 0.48
files gen 3.7 3.8 3.7 7.6 0.48
modules gen 3.7 3.5 3.7 7.6 0.48
tuple_return_value gen 3.8 3.8 3.8 7.7 0.49
control_flow gen 3.8 3.8 3.8 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
fib_recursive gen 0 1 1 8 0.000
tuple_return_value gen 0 0 1 11 0.000
classes gen 1 1 1 10 0.090
asdl_generated gen 1 0 2 8 0.124
modules gen 1 0 0 11 0.128
files gen 1 1 1 6 0.161
gc_stack_roots gen 1 1 0 7 0.204
loops gen 2 0 1 8 0.209
scoped_resource gen 2 1 4 8 0.252
parse gen 2 1 4 7 0.291
containers gen 8 8 10 26 0.310
fib_iter gen 3 1 1 7 0.378
control_flow gen 2 1 1 4 0.498
cgi gen 2 1 1 4 0.499
varargs gen 19 23 16 31 0.622
length gen 4 4 8 6 0.658
cartesian gen 6 6 6 7 0.858
escape gen 7 7 7 6 1.162

raw benchmark files