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 15 0.000
fib_recursive gen 4 5 4 1,090 0.003
loops gen 2 2 1 358 0.005
modules gen 1 0 1 228 0.006
fib_iter gen 6 6 7 945 0.006
asdl_generated gen 7 6 8 512 0.014
scoped_resource gen 27 31 29 1,365 0.020
parse gen 22 26 23 962 0.023
containers gen 6 9 4 141 0.045
classes gen 2 2 1 32 0.056
files gen 6 6 7 100 0.058
tuple_return_value gen 15 16 11 256 0.059
length gen 31 33 33 242 0.128
cartesian gen 70 78 72 391 0.180
escape gen 95 102 91 431 0.220
cgi gen 258 251 255 746 0.345
varargs gen 15 18 18 27 0.546
control_flow gen 136 180 134 146 0.935

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.5 4.3 11.5 0.38
asdl_generated gen 3.3 3.4 3.3 7.7 0.42
cartesian gen 3.4 3.5 3.5 7.6 0.45
gc_stack_roots gen 3.5 3.5 3.4 7.7 0.46
cgi gen 3.5 3.5 3.5 7.6 0.47
escape gen 3.5 3.4 3.5 7.6 0.47
length gen 3.5 3.5 3.5 7.6 0.47
loops gen 3.5 3.8 3.7 7.6 0.47
modules gen 3.5 3.7 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
parse gen 3.8 3.8 3.7 8.0 0.48
control_flow gen 3.7 3.7 3.8 7.6 0.48
fib_iter gen 3.7 3.5 3.4 7.6 0.48
fib_recursive gen 3.7 3.5 3.5 7.6 0.48
tuple_return_value gen 3.7 3.8 3.7 7.6 0.48
files gen 3.8 3.8 3.8 7.7 0.49
containers gen 28.4 28.5 28.5 48.2 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
modules gen 0 1 0 8 0.000
tuple_return_value gen 0 1 4 8 0.000
classes gen 1 1 2 11 0.082
files gen 1 1 0 10 0.097
fib_iter gen 1 1 0 10 0.101
loops gen 1 1 2 6 0.141
control_flow gen 1 1 2 7 0.143
gc_stack_roots gen 1 0 0 5 0.269
fib_recursive gen 3 1 2 8 0.332
scoped_resource gen 3 0 1 8 0.366
escape gen 4 4 8 10 0.399
cgi gen 4 2 4 9 0.444
containers gen 7 6 10 15 0.493
parse gen 4 1 3 7 0.566
varargs gen 24 20 20 29 0.813
length gen 6 4 5 7 0.854
cartesian gen 7 2 5 8 0.867
asdl_generated gen 3 4 2 3 0.996

raw benchmark files