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 1 0 242 0.000
fib_recursive gen 6 4 5 1,106 0.006
fib_iter gen 6 7 7 971 0.006
loops gen 2 2 3 351 0.007
asdl_generated gen 10 8 9 504 0.020
scoped_resource gen 31 30 27 1,359 0.023
parse gen 25 24 23 946 0.027
classes gen 1 2 1 31 0.029
containers gen 5 7 6 129 0.038
tuple_return_value gen 13 16 13 250 0.051
gc_stack_roots gen 1 0 0 12 0.056
files gen 6 5 4 99 0.058
length gen 33 34 33 239 0.138
cartesian gen 63 73 70 414 0.153
escape gen 93 104 89 430 0.215
cgi gen 257 252 257 728 0.353
varargs gen 17 17 19 24 0.715
control_flow gen 135 178 134 141 0.955

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
asdl_generated gen 0 2 1 6 0.000
fib_recursive gen 0 2 1 9 0.000
loops gen 0 1 0 7 0.000
parse gen 0 3 2 7 0.000
gc_stack_roots gen 1 1 1 8 0.084
control_flow gen 1 1 2 10 0.100
fib_iter gen 1 0 0 10 0.100
scoped_resource gen 1 2 3 9 0.111
files gen 1 2 3 8 0.120
classes gen 2 1 1 11 0.164
modules gen 1 0 1 7 0.200
tuple_return_value gen 2 1 2 5 0.392
containers gen 9 8 8 22 0.397
cgi gen 3 1 3 5 0.599
escape gen 5 1 8 8 0.622
varargs gen 21 21 19 32 0.663
length gen 6 3 6 9 0.666
cartesian gen 12 7 5 7 1.719

raw benchmark files