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 1 1 15 0.000
modules gen 0 1 1 236 0.000
fib_recursive gen 5 6 4 1,118 0.005
loops gen 3 2 3 354 0.007
fib_iter gen 7 7 6 949 0.008
asdl_generated gen 9 9 6 525 0.017
scoped_resource gen 29 30 26 1,350 0.021
parse gen 23 26 21 965 0.024
containers gen 6 7 6 135 0.045
files gen 5 6 7 101 0.050
classes gen 2 3 1 35 0.052
tuple_return_value gen 13 15 15 248 0.053
length gen 31 33 35 245 0.128
cartesian gen 67 74 72 394 0.170
escape gen 94 105 93 426 0.220
cgi gen 256 250 256 747 0.342
varargs gen 16 20 21 29 0.544
control_flow gen 136 178 134 144 0.941

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.2 4.5 4.5 11.5 0.37
asdl_generated gen 3.3 3.4 3.4 7.6 0.43
gc_stack_roots gen 3.4 3.5 3.5 7.7 0.44
cartesian gen 3.4 3.4 3.5 7.5 0.46
cgi gen 3.5 3.4 3.5 7.7 0.46
fib_recursive gen 3.5 3.7 3.5 7.7 0.46
escape gen 3.5 3.4 3.4 7.6 0.47
fib_iter gen 3.5 3.5 3.5 7.6 0.47
length gen 3.5 3.5 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.4 7.6 0.47
loops gen 3.7 3.5 3.7 7.7 0.47
parse gen 3.8 3.8 3.8 8.0 0.47
files gen 3.7 3.8 3.8 7.6 0.48
modules gen 3.7 3.5 3.7 7.6 0.48
tuple_return_value gen 3.7 3.8 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
containers gen 28.5 28.7 28.5 48.2 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
control_flow gen 0 1 1 7 0.000
fib_iter gen 0 0 1 8 0.000
loops gen 0 1 0 7 0.000
classes gen 1 0 2 9 0.101
fib_recursive gen 1 0 2 10 0.104
asdl_generated gen 1 1 4 7 0.142
modules gen 1 0 0 7 0.212
scoped_resource gen 2 2 5 9 0.220
gc_stack_roots gen 1 0 0 6 0.241
tuple_return_value gen 2 2 0 8 0.250
files gen 2 1 0 7 0.291
parse gen 3 1 4 10 0.300
containers gen 8 7 8 22 0.362
escape gen 5 1 6 11 0.453
cgi gen 5 4 4 8 0.627
varargs gen 23 19 18 29 0.782
length gen 7 4 4 7 0.981
cartesian gen 8 6 3 5 1.603

raw benchmark files