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 15 0.000
modules gen 0 0 1 231 0.000
fib_iter gen 6 7 6 1,062 0.006
fib_recursive gen 6 5 6 1,093 0.006
loops gen 3 3 2 363 0.007
asdl_generated gen 9 8 8 580 0.016
scoped_resource gen 25 29 25 1,418 0.018
parse gen 23 26 23 959 0.024
classes gen 1 3 1 34 0.026
files gen 3 6 6 99 0.029
containers gen 6 3 7 128 0.045
tuple_return_value gen 14 15 15 248 0.056
length gen 32 36 35 247 0.131
cartesian gen 71 72 71 397 0.179
escape gen 91 100 94 446 0.204
cgi gen 257 249 259 747 0.344
varargs gen 17 15 13 28 0.594
control_flow gen 137 177 137 145 0.946

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
gc_stack_roots gen 3.3 3.4 3.4 7.6 0.43
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
cgi gen 3.4 3.5 3.5 7.6 0.45
cartesian gen 3.5 3.5 3.5 7.7 0.46
escape gen 3.5 3.5 3.5 7.7 0.46
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
parse gen 3.7 3.8 3.8 8.0 0.46
control_flow gen 3.5 3.8 3.7 7.6 0.47
modules gen 3.5 3.5 3.7 7.6 0.47
loops gen 3.7 3.5 3.4 7.7 0.47
fib_iter gen 3.7 3.5 3.7 7.6 0.48
fib_recursive gen 3.7 3.5 3.5 7.6 0.48
tuple_return_value gen 3.7 3.7 3.7 7.6 0.48
files gen 3.8 3.7 3.7 7.7 0.49
containers gen 28.5 28.4 28.7 48.3 0.59
varargs gen 5.5 5.5 5.5 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_recursive gen 0 1 0 8 0.000
loops gen 0 0 1 5 0.000
asdl_generated gen 1 2 2 10 0.100
control_flow gen 1 1 1 8 0.125
fib_iter gen 1 0 1 7 0.144
parse gen 2 1 2 10 0.204
classes gen 2 0 2 8 0.219
cartesian gen 2 8 4 9 0.223
modules gen 1 1 0 6 0.225
tuple_return_value gen 1 2 0 4 0.248
gc_stack_roots gen 1 1 0 5 0.264
containers gen 8 11 6 28 0.276
cgi gen 3 2 1 10 0.300
files gen 4 1 1 8 0.481
escape gen 7 4 4 11 0.632
scoped_resource gen 5 2 5 7 0.700
varargs gen 22 24 25 28 0.768
length gen 6 1 3 7 0.871

raw benchmark files