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
gc_stack_roots gen 0 2 4 0.000
modules gen 0 2 178 0.000
fib_iter gen 8 8 892 0.008
fib_recursive gen 11 11 885 0.012
loops gen 4 3 295 0.013
asdl_generated gen 11 11 370 0.029
parse gen 30 27 769 0.039
scoped_resource gen 48 42 1,035 0.046
containers gen 8 7 113 0.069
files gen 7 7 83 0.087
tuple_return_value gen 16 14 184 0.089
length gen 41 40 202 0.202
classes gen 3 3 15 0.216
escape gen 95 98 359 0.265
cartesian gen 88 76 321 0.273
cgi gen 249 269 512 0.486
varargs gen 16 16 12 1.304
control_flow gen 207 161 113 1.832

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.5 10.8 0.41
parse gen 3.7 3.9 7.6 0.48
cgi gen 3.5 3.7 7.1 0.50
gc_stack_roots gen 3.5 3.5 6.9 0.51
asdl_generated gen 3.7 3.7 7.1 0.52
cartesian gen 3.7 3.5 7.1 0.52
length gen 3.7 3.5 7.1 0.52
scoped_resource gen 3.7 3.7 7.1 0.52
tuple_return_value gen 3.7 3.8 7.1 0.52
loops gen 3.8 3.8 7.2 0.53
escape gen 3.7 3.7 6.8 0.54
control_flow gen 3.8 3.9 6.9 0.55
fib_iter gen 3.8 3.8 6.9 0.55
fib_recursive gen 3.8 3.7 6.9 0.55
files gen 3.8 3.7 6.9 0.55
modules gen 3.8 3.8 6.9 0.55
containers gen 28.6 28.6 47.5 0.60
varargs gen 5.5 5.5 6.9 0.79

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-Souffle Python C++ : Python
asdl_generated gen 0 0 8 0.000
classes gen 0 0 15 0.000
control_flow gen 0 0 8 0.000
fib_iter gen 0 0 8 0.000
fib_recursive gen 0 0 8 0.000
files gen 0 0 4 0.000
parse gen 0 0 4 0.000
scoped_resource gen 0 4 12 0.000
gc_stack_roots gen 2 0 8 0.220
containers gen 8 7 24 0.322
modules gen 2 0 4 0.442
cartesian gen 4 12 8 0.502
tuple_return_value gen 4 5 8 0.512
length gen 4 4 8 0.515
varargs gen 51 51 60 0.848
cgi gen 4 0 4 0.989
escape gen 8 4 4 1.965
loops gen 0 0 0 NA

raw benchmark files