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
loops gen 1 3 2 376 0.002
modules gen 1 1 0 233 0.003
fib_iter gen 5 7 7 965 0.005
fib_recursive gen 6 4 6 1,102 0.006
asdl_generated gen 7 7 8 526 0.013
scoped_resource gen 25 28 27 1,376 0.018
parse gen 22 25 24 958 0.023
classes gen 1 2 3 34 0.026
tuple_return_value gen 11 16 15 252 0.043
files gen 6 6 7 99 0.058
containers gen 9 8 5 124 0.074
gc_stack_roots gen 1 1 1 12 0.111
length gen 34 34 36 242 0.141
cartesian gen 70 79 68 405 0.173
escape gen 93 101 92 410 0.227
cgi gen 257 250 257 737 0.348
varargs gen 17 21 16 32 0.528
control_flow gen 135 176 135 148 0.911

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.5 0.39
cgi gen 3.4 3.5 3.5 7.6 0.45
escape gen 3.4 3.5 3.5 7.6 0.45
gc_stack_roots gen 3.4 3.3 3.4 7.6 0.45
fib_iter gen 3.5 3.5 3.5 7.7 0.46
scoped_resource gen 3.5 3.7 3.5 7.7 0.46
asdl_generated gen 3.5 3.4 3.4 7.6 0.47
cartesian gen 3.5 3.4 3.4 7.6 0.47
length gen 3.5 3.5 3.5 7.6 0.47
loops gen 3.5 3.5 3.7 7.6 0.47
modules gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.7 3.5 3.5 7.6 0.48
files gen 3.7 3.7 3.7 7.6 0.48
parse gen 3.9 3.7 3.7 8.0 0.49
control_flow gen 3.8 3.7 3.7 7.7 0.49
tuple_return_value gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.5 28.5 28.4 48.3 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
fib_recursive gen 0 2 0 9 0.000
gc_stack_roots gen 0 1 1 8 0.000
modules gen 1 1 1 7 0.099
control_flow gen 1 2 1 8 0.125
files gen 1 1 0 7 0.136
containers gen 4 6 8 26 0.156
classes gen 2 1 0 8 0.217
cgi gen 2 1 1 7 0.285
fib_iter gen 2 0 0 6 0.333
asdl_generated gen 3 3 2 8 0.372
length gen 4 2 3 10 0.400
loops gen 2 0 0 4 0.416
parse gen 3 2 1 6 0.486
scoped_resource gen 5 3 3 10 0.497
escape gen 5 5 6 10 0.502
cartesian gen 5 2 7 7 0.714
tuple_return_value gen 4 1 0 5 0.781
varargs gen 21 17 22 23 0.908

raw benchmark files