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 0 1 232 0.003
fib_recursive gen 4 4 6 1,152 0.004
fib_iter gen 6 6 7 962 0.006
loops gen 3 3 3 361 0.007
asdl_generated gen 8 13 9 505 0.016
scoped_resource gen 26 27 27 1,365 0.019
parse gen 25 24 25 948 0.027
containers gen 4 3 8 133 0.031
tuple_return_value gen 12 14 13 249 0.048
files gen 7 5 6 93 0.073
classes gen 3 0 3 33 0.080
gc_stack_roots gen 1 1 0 13 0.102
length gen 32 34 33 242 0.132
cartesian gen 66 72 72 391 0.168
escape gen 93 95 96 440 0.211
cgi gen 239 250 261 740 0.324
varargs gen 18 16 16 28 0.642
control_flow gen 138 177 133 138 0.997

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
cgi gen 3.4 3.5 3.5 7.7 0.44
escape gen 3.4 3.4 3.5 7.7 0.44
gc_stack_roots gen 3.4 3.5 3.4 7.7 0.44
fib_recursive gen 3.5 3.7 3.7 7.7 0.46
scoped_resource gen 3.5 3.5 3.7 7.7 0.46
asdl_generated gen 3.5 3.4 3.3 7.6 0.47
cartesian gen 3.5 3.4 3.4 7.6 0.47
fib_iter gen 3.5 3.5 3.5 7.6 0.47
loops gen 3.5 3.7 3.7 7.6 0.47
modules gen 3.7 3.5 3.5 7.7 0.47
length gen 3.7 3.5 3.5 7.6 0.48
parse gen 3.9 3.8 3.8 8.1 0.48
files gen 3.8 3.8 3.7 7.7 0.49
control_flow gen 3.8 3.8 3.7 7.6 0.50
tuple_return_value gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.5 28.5 28.4 48.2 0.59
varargs gen 5.5 5.5 5.6 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 3 0 10 0.000
files gen 0 2 1 12 0.000
gc_stack_roots gen 0 0 1 7 0.000
loops gen 0 0 0 4 0.000
parse gen 0 3 0 7 0.000
control_flow gen 1 1 2 11 0.091
modules gen 1 1 1 7 0.102
fib_iter gen 1 1 0 8 0.126
asdl_generated gen 2 0 1 11 0.182
fib_recursive gen 2 3 0 6 0.296
containers gen 9 11 5 25 0.372
tuple_return_value gen 3 3 2 7 0.428
escape gen 4 8 2 8 0.501
scoped_resource gen 4 5 3 6 0.676
cgi gen 5 3 1 7 0.716
varargs gen 21 23 23 29 0.723
length gen 7 3 6 9 0.774
cartesian gen 10 6 3 8 1.246

raw benchmark files