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 5 4 1,089 0.005
modules gen 1 0 1 235 0.006
loops gen 3 3 1 366 0.007
fib_iter gen 8 6 7 949 0.009
asdl_generated gen 7 7 6 516 0.014
scoped_resource gen 27 29 27 1,357 0.020
parse gen 22 25 23 955 0.023
containers gen 5 6 6 137 0.035
classes gen 2 3 2 37 0.050
tuple_return_value gen 12 15 14 243 0.051
gc_stack_roots gen 1 1 1 13 0.056
files gen 6 7 7 96 0.064
length gen 36 32 39 246 0.145
cartesian gen 70 73 74 389 0.180
escape gen 91 100 91 423 0.214
cgi gen 257 252 259 730 0.352
varargs gen 13 15 15 29 0.453
control_flow gen 134 177 134 148 0.905

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.3 11.5 0.39
asdl_generated gen 3.4 3.5 3.4 7.6 0.45
fib_recursive gen 3.4 3.7 3.7 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
length gen 3.5 3.7 3.7 7.7 0.46
parse gen 3.7 3.8 3.8 8.0 0.46
cartesian gen 3.5 3.5 3.5 7.6 0.47
cgi gen 3.5 3.5 3.4 7.6 0.47
escape gen 3.5 3.5 3.5 7.6 0.47
modules gen 3.5 3.5 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.7 3.7 3.5 7.7 0.47
files gen 3.7 3.7 3.8 7.7 0.47
loops gen 3.7 3.7 3.7 7.6 0.48
tuple_return_value gen 3.8 3.7 3.7 7.7 0.49
control_flow gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.7 28.4 28.7 48.4 0.59
varargs gen 5.5 5.4 5.6 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_iter gen 0 1 0 8 0.000
loops gen 0 0 2 7 0.000
modules gen 0 1 0 8 0.000
gc_stack_roots gen 1 0 1 8 0.091
files gen 1 0 0 10 0.102
classes gen 1 0 1 7 0.136
scoped_resource gen 3 3 3 15 0.199
control_flow gen 2 2 2 9 0.222
fib_recursive gen 1 1 2 4 0.260
tuple_return_value gen 3 2 1 10 0.286
cgi gen 3 0 3 10 0.300
parse gen 4 2 3 10 0.394
asdl_generated gen 3 3 4 7 0.432
containers gen 10 8 8 20 0.474
cartesian gen 5 9 2 9 0.556
length gen 3 5 0 5 0.595
escape gen 8 5 6 13 0.613
varargs gen 25 24 24 29 0.870

raw benchmark files