# translation.profopt

- name: profopt
- description: Enable profile guided optimization. Defaults to enabling this for PyPy. For other training workloads, please specify them in profoptargs
- command-line: --profopt
- command-line for negation: --no-profopt
- option type: boolean option
- default: False

Use GCCs profile-guided optimizations. This option specifies the the arguments with which to call pypy-c (and in general the translated RPython program) to gather profile data. Example for pypy-c: "-c 'from richards import main;main(); from test import pystone; pystone.main()'"

NOTE: be aware of what this does in JIT-enabled executables. What it does is instrument and later optimize the C code that happens to run in the example you specify, ignoring any execution of the JIT-generated assembler. That means that you have to choose the example wisely. If it is something that will just generate assembler and stay there, there is little value. If it is something that exercises heavily library routines that are anyway written in C, then it will optimize that. Most interesting would be something that causes a lot of JIT-compilation, like running a medium-sized test suite several times in a row, in order to optimize the warm-up in general.