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 0 1 14 0.000
fib_recursive gen 5 4 5 1,104 0.005
loops gen 2 2 3 358 0.005
fib_iter gen 5 6 6 960 0.005
modules gen 1 0 0 239 0.006
asdl_generated gen 8 9 8 503 0.016
scoped_resource gen 27 30 26 1,369 0.020
parse gen 21 25 26 960 0.021
containers gen 5 8 4 129 0.039
files gen 5 7 6 99 0.049
tuple_return_value gen 13 14 13 252 0.051
classes gen 3 1 2 33 0.081
length gen 33 35 35 246 0.135
cartesian gen 68 75 66 391 0.174
escape gen 92 100 96 433 0.213
cgi gen 264 250 257 728 0.363
varargs gen 16 12 17 36 0.454
control_flow gen 134 178 135 151 0.884

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 2 1 10 0.000
modules gen 0 1 1 7 0.000
loops gen 1 1 0 10 0.086
fib_recursive gen 1 2 1 9 0.115
asdl_generated gen 2 1 2 11 0.179
gc_stack_roots gen 1 1 1 6 0.227
files gen 2 0 1 8 0.245
control_flow gen 2 2 1 6 0.332
tuple_return_value gen 2 2 2 6 0.332
fib_iter gen 2 1 1 6 0.335
containers gen 9 6 10 26 0.344
cgi gen 3 2 2 7 0.428
scoped_resource gen 3 2 4 6 0.497
parse gen 5 2 0 9 0.545
length gen 6 2 3 10 0.604
escape gen 6 5 3 9 0.669
cartesian gen 9 5 8 10 0.901
varargs gen 22 26 21 22 1.021

raw benchmark files