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 0 14 0.000
modules gen 0 1 0 238 0.000
fib_recursive gen 5 6 5 1,100 0.005
fib_iter gen 5 7 6 959 0.005
loops gen 3 3 3 360 0.007
asdl_generated gen 9 9 7 511 0.018
scoped_resource gen 28 30 29 1,367 0.020
parse gen 22 26 21 951 0.024
containers gen 5 9 5 133 0.036
classes gen 2 2 1 36 0.050
tuple_return_value gen 14 15 12 249 0.056
files gen 6 5 5 96 0.060
length gen 35 32 31 245 0.142
cartesian gen 71 73 72 394 0.179
escape gen 96 99 94 423 0.227
cgi gen 261 247 258 730 0.357
varargs gen 14 14 14 27 0.517
control_flow gen 138 176 133 145 0.948

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.3 4.5 11.6 0.37
gc_stack_roots gen 3.3 3.4 3.4 7.6 0.43
asdl_generated gen 3.4 3.3 3.5 7.6 0.45
cartesian gen 3.4 3.4 3.5 7.6 0.45
cgi gen 3.4 3.5 3.4 7.6 0.45
escape gen 3.4 3.5 3.4 7.6 0.45
parse gen 3.7 3.8 3.7 8.1 0.45
length gen 3.5 3.7 3.4 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.5 0.47
control_flow gen 3.7 3.8 3.7 7.6 0.48
fib_iter gen 3.7 3.4 3.5 7.6 0.48
fib_recursive gen 3.7 3.5 3.5 7.6 0.48
loops gen 3.7 3.5 3.7 7.6 0.48
modules gen 3.7 3.7 3.4 7.6 0.48
tuple_return_value gen 3.7 3.7 3.8 7.6 0.48
files gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.5 28.6 28.5 48.4 0.59
varargs gen 5.5 5.5 5.6 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
loops gen 0 0 0 7 0.000
tuple_return_value gen 1 2 3 10 0.100
files gen 1 2 2 9 0.107
control_flow gen 1 2 2 9 0.111
classes gen 1 1 2 7 0.130
fib_recursive gen 1 0 1 8 0.132
asdl_generated gen 1 1 3 7 0.143
modules gen 1 1 1 8 0.179
escape gen 2 6 3 11 0.182
scoped_resource gen 2 2 1 9 0.220
gc_stack_roots gen 1 0 1 6 0.221
fib_iter gen 2 0 1 8 0.252
cgi gen 3 4 3 9 0.334
containers gen 9 5 9 26 0.335
parse gen 3 1 4 7 0.438
cartesian gen 4 7 3 9 0.449
length gen 4 4 8 8 0.497
varargs gen 24 24 25 29 0.825

raw benchmark files