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 2 2 279 0.007
fib_iter gen 6 7 836 0.007
modules gen 2 2 174 0.009
fib_recursive gen 10 10 832 0.012
asdl_generated gen 9 9 351 0.026
parse gen 26 23 740 0.036
scoped_resource gen 43 40 966 0.045
files gen 5 6 65 0.075
containers gen 8 7 98 0.078
classes gen 2 2 23 0.084
tuple_return_value gen 17 17 172 0.098
length gen 37 37 197 0.190
cartesian gen 79 81 320 0.245
escape gen 93 97 334 0.280
gc_stack_roots gen 2 0 6 0.288
cgi gen 256 260 490 0.523
varargs gen 15 14 18 0.829
control_flow gen 193 148 99 1.953

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.3 10.7 0.40
parse gen 3.8 3.8 7.6 0.50
scoped_resource gen 3.7 3.7 7.1 0.52
gc_stack_roots gen 3.5 3.5 6.8 0.52
cartesian gen 3.7 3.5 6.9 0.53
cgi gen 3.7 3.5 6.9 0.53
escape gen 3.7 3.7 6.9 0.53
modules gen 3.8 3.8 7.1 0.54
control_flow 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.8 6.9 0.55
length gen 3.8 3.7 6.9 0.55
tuple_return_value gen 3.8 3.8 6.9 0.55
loops gen 3.9 3.7 7.1 0.56
asdl_generated gen 3.8 3.7 6.8 0.56
fib_iter gen 3.9 3.8 6.9 0.57
containers gen 28.8 28.8 47.8 0.60
varargs gen 5.6 5.4 7.1 0.80

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-Souffle Python C++ : Python
fib_recursive gen 0 0 7 0.000
gc_stack_roots gen 0 2 5 0.000
modules gen 0 0 5 0.000
containers gen 3 3 27 0.121
fib_iter gen 1 0 8 0.128
classes gen 1 1 5 0.193
asdl_generated gen 1 1 5 0.200
parse gen 1 2 5 0.203
scoped_resource gen 1 3 4 0.252
loops gen 2 1 7 0.277
files gen 2 2 7 0.280
tuple_return_value gen 2 1 6 0.332
control_flow gen 4 3 7 0.573
length gen 4 6 5 0.788
varargs gen 23 24 25 0.915
cgi gen 4 2 4 0.999
escape gen 5 7 4 1.256
cartesian gen 9 4 2 4.473

raw benchmark files