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 233 0.000
fib_recursive gen 4 5 6 1,095 0.004
fib_iter gen 6 7 5 985 0.006
loops gen 3 4 2 355 0.007
asdl_generated gen 9 9 7 528 0.017
scoped_resource gen 28 28 26 1,386 0.020
parse gen 24 24 22 971 0.025
classes gen 1 1 3 33 0.028
files gen 4 6 5 100 0.040
tuple_return_value gen 11 14 14 252 0.044
containers gen 6 7 5 122 0.048
gc_stack_roots gen 1 1 1 15 0.090
length gen 33 31 34 237 0.140
cartesian gen 74 78 69 389 0.191
escape gen 90 101 90 446 0.201
cgi gen 258 246 256 731 0.353
varargs gen 18 14 20 29 0.627
control_flow gen 133 178 133 145 0.921

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.3 4.3 4.5 11.5 0.38
asdl_generated gen 3.3 3.3 3.5 7.6 0.43
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
length gen 3.5 3.5 3.7 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
cartesian gen 3.5 3.5 3.5 7.6 0.47
escape gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.5 3.7 3.7 7.6 0.47
fib_recursive gen 3.5 3.5 3.5 7.6 0.47
modules gen 3.5 3.5 3.7 7.6 0.47
files gen 3.7 3.7 3.8 7.7 0.47
cgi gen 3.7 3.5 3.5 7.6 0.48
loops gen 3.7 3.7 3.5 7.6 0.48
tuple_return_value gen 3.7 3.7 3.7 7.6 0.48
parse gen 3.9 3.7 3.8 8.1 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.3 28.5 28.5 48.4 0.59
varargs gen 5.4 5.5 5.5 7.6 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
gc_stack_roots gen 0 0 0 5 0.000
loops gen 0 0 1 10 0.000
asdl_generated gen 1 1 3 9 0.113
parse gen 1 3 3 9 0.113
fib_iter gen 1 0 2 7 0.146
modules gen 1 1 1 9 0.162
classes gen 2 2 0 10 0.185
control_flow gen 2 1 2 9 0.223
fib_recursive gen 2 1 0 7 0.254
containers gen 9 7 9 34 0.260
scoped_resource gen 3 4 5 11 0.270
files gen 3 1 2 7 0.429
tuple_return_value gen 4 3 1 9 0.443
length gen 5 6 5 9 0.560
varargs gen 20 24 18 27 0.748
cgi gen 4 7 6 5 0.798
cartesian gen 10 7 6 12 0.838
escape gen 8 3 9 3 2.669

raw benchmark files