### Navigation

- index
- PyPy 2.2.0 documentation »

# The `--opt` or `-O` translation option

This meta-option selects a default set of optimization settings to use during a translation. Usage:

    translate.py --opt=#
    translate.py -O#

where `#` is the desired optimization level. The valid choices are:

> Level | Description
> --- | ---
> –opt=0 | all optimizations off; fastest translation (*)
> –opt=1 | non-time-consuming optimizations on (*)
> –opt=size | minimize the size of the final executable (*)
> –opt=mem | minimize the run-time RAM consumption (in-progress)
> –opt=2 | all optimizations on; good run-time performance
> –opt=3 | same as –opt=2; remove asserts; gcc profiling (**)
> –opt=jit | includes the JIT and tweak other optimizations for it

(*): The levels 0, 1 and size use the Boehm-Demers-Weiser garbage collector (Debian package `libgc-dev`). The translation itself is faster and consumes less memory; the final executable is smaller but slower. The other levels use one of our built-in custom garbage collectors.

(**): The level 3 enables gcc profile-driven recompilation when translating PyPy.

The exact set of optimizations enabled by each level depends on the backend. Individual translation targets can also select their own options based on the level: when translating PyPy, the level mem enables the memory-saving object implementations in the object space; levels 2 and 3 enable the advanced object implementations that give an increase in performance; level 3 also enables gcc profile-driven recompilation.

The default level is 2.

### Navigation

- index
- PyPy 2.2.0 documentation »