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 0 11 0.000
fib_recursive gen 6 5 6 1,158 0.005
modules gen 1 2 1 230 0.006
fib_iter gen 7 10 7 967 0.008
loops gen 3 3 1 359 0.008
scoped_resource gen 25 32 30 1,355 0.018
asdl_generated gen 11 13 9 510 0.021
parse gen 25 27 25 956 0.026
files gen 4 8 6 99 0.039
containers gen 6 7 4 118 0.048
tuple_return_value gen 13 17 15 254 0.052
classes gen 2 1 1 31 0.071
length gen 36 32 31 245 0.145
cartesian gen 67 80 71 392 0.172
escape gen 99 104 90 426 0.233
cgi gen 258 248 259 758 0.340
varargs gen 20 19 13 29 0.682
control_flow gen 135 181 134 149 0.904

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.5 11.5 0.39
asdl_generated gen 3.3 3.3 3.3 7.7 0.42
gc_stack_roots gen 3.4 3.4 3.3 7.7 0.44
fib_recursive gen 3.4 3.5 3.5 7.6 0.45
cartesian gen 3.5 3.4 3.4 7.7 0.46
loops gen 3.5 3.5 3.5 7.7 0.46
parse gen 3.7 3.8 3.8 8.0 0.46
cgi gen 3.5 3.4 3.4 7.6 0.47
escape gen 3.5 3.4 3.4 7.6 0.47
fib_iter gen 3.5 3.4 3.7 7.6 0.47
modules gen 3.5 3.5 3.7 7.6 0.47
files gen 3.7 3.8 3.8 7.6 0.48
length gen 3.7 3.7 3.7 7.6 0.48
scoped_resource gen 3.7 3.5 3.5 7.6 0.48
tuple_return_value gen 3.7 3.8 3.8 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
containers gen 28.4 28.3 28.5 48.2 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
asdl_generated gen 0 0 2 6 0.000
fib_iter gen 0 0 0 11 0.000
loops gen 0 2 2 8 0.000
modules gen 0 0 1 7 0.000
classes gen 1 1 2 13 0.084
fib_recursive gen 1 2 0 8 0.128
gc_stack_roots gen 1 1 2 10 0.141
containers gen 8 8 10 42 0.201
parse gen 2 1 3 9 0.222
tuple_return_value gen 2 2 1 7 0.292
control_flow gen 2 2 2 6 0.335
files gen 4 0 1 10 0.380
length gen 4 6 8 8 0.494
cartesian gen 7 5 6 11 0.632
escape gen 4 5 10 6 0.667
varargs gen 20 22 27 28 0.707
scoped_resource gen 6 1 1 8 0.748
cgi gen 7 4 4 3 2.334

raw benchmark files