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
loops gen 0 0 283 0.000
modules gen 0 0 172 0.000
fib_iter gen 4 8 884 0.004
fib_recursive gen 11 11 876 0.012
asdl_generated gen 7 7 372 0.019
parse gen 29 27 778 0.037
scoped_resource gen 45 38 1,036 0.044
containers gen 8 7 108 0.073
tuple_return_value gen 16 18 194 0.085
files gen 7 0 62 0.121
classes gen 3 0 16 0.205
length gen 45 29 209 0.215
cartesian gen 78 78 335 0.232
varargs gen 8 12 32 0.243
escape gen 97 100 356 0.274
gc_stack_roots gen 2 0 4 0.421
cgi gen 270 264 510 0.529
control_flow gen 209 159 110 1.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++-Souffle Python C++ : Python
classes gen 4.5 4.3 10.8 0.41
parse gen 3.8 3.9 7.7 0.49
gc_stack_roots gen 3.5 3.4 6.9 0.51
escape gen 3.7 3.5 7.1 0.52
cartesian gen 3.7 3.7 6.9 0.53
cgi gen 3.7 3.5 6.9 0.53
files gen 3.7 3.8 6.9 0.53
asdl_generated gen 3.8 3.7 7.1 0.54
fib_iter gen 3.8 3.8 7.1 0.54
fib_recursive gen 3.8 3.7 6.9 0.55
length gen 3.8 3.8 6.9 0.55
modules gen 3.8 3.8 6.9 0.55
scoped_resource gen 3.8 3.5 6.9 0.55
loops gen 3.9 3.9 7.1 0.56
control_flow gen 3.9 3.7 6.9 0.57
tuple_return_value gen 3.9 3.7 6.9 0.57
containers gen 28.5 28.7 47.8 0.60
varargs gen 5.6 5.6 6.9 0.81

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-Souffle Python C++ : Python
cgi gen 0 4 4 0.000
classes gen 0 3 16 0.000
control_flow gen 0 0 4 0.000
fib_recursive gen 0 0 8 0.000
files gen 0 8 15 0.000
gc_stack_roots gen 0 2 8 0.000
length gen 0 16 8 0.000
parse gen 0 0 8 0.000
modules gen 2 2 12 0.168
containers gen 8 7 28 0.281
loops gen 4 3 12 0.318
fib_iter gen 4 0 12 0.323
asdl_generated gen 4 4 8 0.448
scoped_resource gen 4 8 4 0.941
tuple_return_value gen 4 0 4 1.037
varargs gen 58 54 40 1.459
cartesian gen 16 8 4 3.847
escape gen 8 4 0 inf

raw benchmark files