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 0 0 1 216 0.000
loops gen 1 2 1 308 0.004
fib_recursive gen 5 5 5 987 0.006
fib_iter gen 6 6 5 738 0.009
asdl_generated gen 7 10 9 514 0.014
scoped_resource gen 29 29 29 1,232 0.023
parse gen 23 25 23 901 0.025
containers gen 4 3 5 114 0.036
files gen 4 6 6 93 0.047
tuple_return_value gen 14 14 13 218 0.066
classes gen 2 1 1 33 0.070
gc_stack_roots gen 1 1 1 13 0.085
length gen 33 29 31 222 0.150
cartesian gen 65 73 68 357 0.182
escape gen 81 89 83 387 0.208
cgi gen 181 175 184 655 0.276
varargs gen 14 13 14 21 0.665
control_flow gen 125 168 125 139 0.902

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.6 4.3 4.6 11.6 0.39
asdl_generated gen 3.4 3.4 3.4 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.5 7.9 0.45
escape gen 3.5 3.7 3.7 7.7 0.46
cartesian gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.7 3.7 3.7 7.9 0.47
modules gen 3.7 3.5 3.7 7.9 0.47
control_flow gen 3.7 3.8 3.9 7.7 0.47
length gen 3.7 3.5 3.5 7.7 0.47
loops gen 3.7 3.5 3.7 7.7 0.47
scoped_resource gen 3.7 3.5 3.7 7.7 0.47
parse gen 3.9 3.9 3.8 8.1 0.48
tuple_return_value gen 3.8 3.8 3.8 7.9 0.48
fib_recursive gen 3.8 3.8 3.7 7.7 0.49
files gen 3.8 3.7 3.9 7.7 0.49
containers gen 28.7 28.8 28.6 48.4 0.59
varargs gen 5.6 5.6 5.6 7.6 0.74

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 2 1 6 0.000
control_flow gen 0 1 1 2 0.000
fib_iter gen 0 0 1 6 0.000
fib_recursive gen 0 0 0 5 0.000
gc_stack_roots gen 0 0 0 4 0.000
tuple_return_value gen 0 2 1 6 0.000
parse gen 1 1 1 6 0.166
scoped_resource gen 1 2 1 6 0.170
loops gen 1 1 1 6 0.183
length gen 1 3 3 4 0.252
asdl_generated gen 2 0 0 6 0.353
containers gen 9 10 8 23 0.396
cartesian gen 4 1 1 6 0.666
cgi gen 5 3 2 7 0.716
varargs gen 11 11 10 15 0.732
modules gen 1 1 0 1 1.071
files gen 2 0 1 1 1.749
escape gen 5 6 3 2 2.514

raw benchmark files