mycpp Code Generation

Measure the speedup from mycpp, and the resource usage.

Source code: oil/mycpp/examples

User Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-Souffle Python C++ : Python
classes gen 0 0 23 0.000
fib_iter gen 8 8 887 0.009
asdl_generated gen 4 11 369 0.010
modules gen 2 2 174 0.010
fib_recursive gen 11 11 884 0.012
loops gen 4 0 293 0.013
parse gen 22 27 759 0.029
scoped_resource gen 48 46 1,049 0.046
tuple_return_value gen 14 15 193 0.071
containers gen 10 10 120 0.086
files gen 7 7 68 0.106
length gen 45 42 204 0.220
cartesian gen 88 83 347 0.253
escape gen 123 94 353 0.349
gc_stack_roots gen 2 2 4 0.436
cgi gen 265 251 534 0.497
varargs gen 19 8 15 1.271
control_flow gen 209 159 107 1.950

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++-Souffle Python C++ : Python
classes gen 4.3 4.5 10.7 0.40
parse gen 3.7 3.9 7.7 0.47
fib_iter gen 3.4 3.8 6.9 0.49
escape gen 3.5 3.7 7.1 0.50
gc_stack_roots gen 3.5 3.4 6.9 0.51
cartesian gen 3.7 3.5 7.1 0.52
scoped_resource gen 3.7 3.5 7.1 0.52
asdl_generated gen 3.7 3.5 6.9 0.53
control_flow gen 3.7 3.8 6.9 0.53
loops gen 3.8 3.8 7.1 0.54
tuple_return_value gen 3.8 3.7 7.1 0.54
cgi gen 3.7 3.8 6.8 0.54
fib_recursive gen 3.8 3.7 6.9 0.55
files gen 3.8 3.8 6.9 0.55
length gen 3.8 3.8 6.9 0.55
modules gen 3.9 3.8 7.1 0.56
containers gen 28.5 28.7 47.5 0.60
varargs gen 5.6 5.5 6.9 0.81

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-Souffle Python C++ : Python
control_flow gen 0 0 8 0.000
fib_iter gen 0 0 8 0.000
fib_recursive gen 0 0 4 0.000
files gen 0 0 8 0.000
gc_stack_roots gen 0 0 8 0.000
length gen 0 4 4 0.000
loops gen 0 3 4 0.000
modules gen 0 0 8 0.000
containers gen 5 5 20 0.257
cgi gen 4 4 12 0.331
classes gen 3 3 8 0.429
asdl_generated gen 7 0 12 0.605
varargs gen 47 58 57 0.813
parse gen 7 0 8 0.928
escape gen 4 12 4 0.991
cartesian gen 4 4 0 inf
tuple_return_value gen 7 4 0 inf
scoped_resource gen 0 0 0 NA

raw benchmark files