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 1 1 0 228 0.003
loops gen 2 3 3 358 0.005
fib_recursive gen 5 6 6 1,118 0.005
fib_iter gen 5 6 7 959 0.005
asdl_generated gen 8 10 9 516 0.015
scoped_resource gen 32 29 30 1,385 0.023
parse gen 25 25 22 968 0.025
containers gen 5 4 5 131 0.037
classes gen 2 1 2 37 0.048
files gen 6 7 6 101 0.058
tuple_return_value gen 14 12 14 243 0.058
gc_stack_roots gen 1 1 0 12 0.114
length gen 33 31 35 237 0.139
cartesian gen 66 74 69 397 0.167
escape gen 94 96 96 430 0.219
cgi gen 261 250 256 733 0.356
varargs gen 19 18 16 27 0.689
control_flow gen 133 176 135 148 0.901

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.3 11.6 0.38
gc_stack_roots gen 3.3 3.4 3.4 7.6 0.43
cartesian gen 3.4 3.5 3.5 7.7 0.44
asdl_generated gen 3.4 3.3 3.3 7.6 0.45
cgi gen 3.4 3.5 3.5 7.6 0.45
fib_iter gen 3.5 3.7 3.5 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
escape gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.5 3.7 3.5 7.6 0.47
loops gen 3.5 3.5 3.8 7.6 0.47
modules gen 3.5 3.7 3.5 7.6 0.47
parse gen 3.8 3.9 3.8 8.1 0.47
files gen 3.7 3.8 3.8 7.7 0.47
length gen 3.7 3.5 3.5 7.7 0.47
tuple_return_value gen 3.7 3.7 3.7 7.7 0.47
control_flow gen 3.7 3.8 3.8 7.6 0.48
containers gen 28.5 28.6 28.4 48.2 0.59
varargs gen 5.4 5.5 5.5 7.7 0.69

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
gc_stack_roots gen 0 1 1 8 0.000
scoped_resource gen 0 3 1 11 0.000
modules gen 1 0 1 11 0.063
tuple_return_value gen 1 5 1 12 0.084
loops gen 1 0 0 8 0.106
files gen 1 0 1 8 0.121
classes gen 1 2 1 7 0.126
parse gen 1 2 3 8 0.128
fib_recursive gen 1 0 0 6 0.149
fib_iter gen 2 1 0 8 0.255
asdl_generated gen 2 0 1 7 0.285
cgi gen 3 3 4 9 0.334
control_flow gen 3 2 0 7 0.427
containers gen 9 10 9 19 0.461
length gen 5 5 4 8 0.623
varargs gen 20 21 22 29 0.676
cartesian gen 9 7 6 9 0.989
escape gen 5 9 3 5 0.992

raw benchmark files