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 4 5 5 1,097 0.004
loops gen 2 2 3 353 0.005
modules gen 1 0 1 235 0.006
fib_iter gen 6 6 7 966 0.006
asdl_generated gen 9 9 9 507 0.018
scoped_resource gen 27 27 29 1,379 0.020
parse gen 23 24 25 955 0.025
classes gen 1 1 1 31 0.044
files gen 5 5 6 99 0.049
tuple_return_value gen 13 13 12 246 0.053
containers gen 7 7 4 123 0.057
gc_stack_roots gen 1 1 1 14 0.096
length gen 35 31 37 240 0.144
cartesian gen 66 71 69 393 0.167
escape gen 91 98 91 437 0.209
cgi gen 257 252 256 733 0.350
varargs gen 18 15 23 29 0.610
control_flow gen 133 178 133 146 0.912

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.6 0.38
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
escape gen 3.4 3.5 3.7 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
cgi gen 3.5 3.5 3.4 7.7 0.46
fib_recursive gen 3.5 3.5 3.5 7.7 0.46
tuple_return_value gen 3.5 3.8 3.8 7.7 0.46
cartesian gen 3.5 3.4 3.5 7.6 0.47
length gen 3.5 3.5 3.4 7.6 0.47
modules gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
parse gen 3.8 3.9 3.8 8.1 0.47
loops gen 3.5 3.5 3.5 7.5 0.47
fib_iter gen 3.7 3.7 3.5 7.7 0.47
control_flow gen 3.7 3.7 3.8 7.6 0.48
files gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.4 28.4 28.5 48.4 0.59
varargs gen 5.5 5.5 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
gc_stack_roots gen 0 0 0 7 0.000
modules gen 0 1 0 8 0.000
classes gen 1 2 1 14 0.097
loops gen 1 2 0 8 0.107
asdl_generated gen 1 1 1 8 0.124
parse gen 2 3 0 9 0.217
containers gen 7 8 10 32 0.220
files gen 2 2 1 8 0.240
tuple_return_value gen 2 3 3 8 0.249
control_flow gen 2 1 2 8 0.250
fib_recursive gen 2 1 1 7 0.254
scoped_resource gen 3 6 1 10 0.303
fib_iter gen 1 1 0 3 0.336
length gen 4 6 2 8 0.493
cgi gen 4 0 3 8 0.500
varargs gen 21 24 15 27 0.764
escape gen 6 6 8 6 0.994
cartesian gen 10 9 6 8 1.247

raw benchmark files