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 1 1 16 0.000
modules gen 1 0 1 233 0.003
loops gen 2 1 2 355 0.005
fib_recursive gen 6 6 5 1,073 0.006
fib_iter gen 6 6 7 942 0.006
asdl_generated gen 9 8 9 505 0.018
scoped_resource gen 27 27 25 1,352 0.020
parse gen 23 24 24 965 0.023
classes gen 1 2 1 35 0.026
containers gen 4 5 4 123 0.035
tuple_return_value gen 10 16 13 251 0.042
files gen 7 6 4 99 0.069
length gen 37 35 35 245 0.149
cartesian gen 71 74 70 393 0.181
escape gen 93 96 93 438 0.211
cgi gen 243 248 249 731 0.332
varargs gen 17 18 22 36 0.463
control_flow gen 135 178 134 155 0.875

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.3 3.4 3.4 7.6 0.43
gc_stack_roots gen 3.4 3.3 3.4 7.7 0.44
cartesian gen 3.4 3.5 3.4 7.6 0.45
parse gen 3.7 3.7 3.9 8.1 0.45
length gen 3.5 3.5 3.5 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
cgi gen 3.5 3.5 3.4 7.6 0.47
loops gen 3.5 3.7 3.4 7.6 0.47
escape gen 3.7 3.5 3.4 7.7 0.47
fib_recursive gen 3.7 3.7 3.7 7.7 0.47
tuple_return_value gen 3.7 3.7 3.8 7.7 0.47
fib_iter gen 3.7 3.7 3.5 7.6 0.48
modules gen 3.7 3.7 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
files gen 3.8 3.8 3.5 7.6 0.50
containers gen 28.4 28.5 28.4 48.2 0.59
varargs gen 5.5 5.5 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 0 1 5 0.000
fib_recursive gen 0 0 2 7 0.000
files gen 0 1 2 9 0.000
loops gen 1 2 0 11 0.077
fib_iter gen 1 1 0 11 0.092
modules gen 1 1 0 7 0.103
asdl_generated gen 1 2 1 6 0.164
classes gen 2 1 1 9 0.201
gc_stack_roots gen 1 1 0 5 0.272
containers gen 10 10 10 29 0.330
length gen 2 2 4 6 0.338
scoped_resource gen 3 5 5 7 0.432
parse gen 3 3 2 6 0.491
tuple_return_value gen 5 1 2 8 0.594
cartesian gen 5 6 5 7 0.716
varargs gen 22 20 17 23 0.939
escape gen 6 9 6 6 0.995
cgi gen 4 3 4 4 1.002

raw benchmark files