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
classes gen 0 2 1 37 0.000
modules gen 0 1 1 239 0.000
loops gen 1 3 2 363 0.002
fib_recursive gen 6 5 4 1,078 0.006
fib_iter gen 6 7 5 954 0.006
asdl_generated gen 9 9 8 509 0.018
scoped_resource gen 28 31 27 1,369 0.020
parse gen 22 24 24 954 0.024
tuple_return_value gen 13 17 12 254 0.051
gc_stack_roots gen 1 1 1 13 0.053
files gen 7 7 5 98 0.067
containers gen 10 7 6 122 0.078
length gen 34 33 31 246 0.137
cartesian gen 70 75 71 399 0.175
escape gen 92 96 95 435 0.211
cgi gen 256 251 258 728 0.351
varargs gen 12 18 20 29 0.412
control_flow gen 135 177 134 148 0.915

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.5 4.3 4.3 11.5 0.39
fib_iter gen 3.4 3.5 3.4 7.7 0.44
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
cartesian gen 3.4 3.5 3.4 7.6 0.45
escape gen 3.4 3.5 3.5 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
parse gen 3.7 3.8 3.7 8.1 0.45
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
cgi gen 3.5 3.5 3.5 7.6 0.47
length gen 3.5 3.4 3.5 7.6 0.47
loops gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.5 3.5 3.5 7.5 0.47
modules gen 3.7 3.5 3.7 7.7 0.47
files gen 3.8 3.8 3.8 7.7 0.49
control_flow gen 3.8 3.8 3.8 7.6 0.50
tuple_return_value gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.7 28.6 28.7 48.2 0.59
varargs gen 5.4 5.5 5.5 7.6 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 4 2 9 0.000
fib_recursive gen 0 1 3 8 0.000
files gen 0 0 1 10 0.000
asdl_generated gen 1 1 2 11 0.090
gc_stack_roots gen 1 0 0 7 0.099
containers gen 4 8 8 31 0.137
fib_iter gen 1 0 2 7 0.146
scoped_resource gen 2 1 4 13 0.153
loops gen 2 0 1 6 0.291
modules gen 1 0 1 4 0.372
tuple_return_value gen 2 0 3 5 0.398
classes gen 3 1 1 6 0.439
parse gen 3 4 1 6 0.489
cartesian gen 5 5 4 9 0.553
cgi gen 4 0 2 7 0.571
length gen 5 3 7 8 0.622
varargs gen 27 20 18 33 0.815
escape gen 6 8 3 4 1.500

raw benchmark files