Compartilhar via


/Os, /Ot (favorecer código pequeno, favorecer código rápido)

Minimiza ou maximiza o tamanho de Execuções e da DLL.

/Os
/Ot

Comentários

/Os código (pequeno) em detrimento minimiza o tamanho de Execuções e de DLL instruindo o compilador favorecem o tamanho sobre a velocidade. O compilador pode reduzir muitas construções de 2.0 C e C++ funcional semelhantes às sequências de código de máquina. Ocasionalmente essas diferenças oferecem troca de tamanho na velocidade. As opções de /Os e de /Ot lhe permitem especificar uma preferência para uma sobre a outro:

/Ot (código rápido em detrimento) maximiza a velocidade de Execuções e de DLL instruindo o compilador para favorecer a velocidade sobre o tamanho. (Essa é a opção.) O compilador pode reduzir muitas construções de 2.0 C e C++ funcional semelhantes às sequências de código de máquina. Ocasionalmente, essas diferenças oferecem troca de tamanho na velocidade. A opção /Ot é insinuada pela opção de velocidade maximizar/O2(). A opção de /O2 combina várias opções gerar código muito rápida.

Se você usar /Os ou /Ot, você também deve especificar /Og para otimizar o código.

Dica

As informações coletadas de analisar execuções de teste substituirá as otimizações que seriam de outra forma aplicado se você especificar /Ob, /Os, ou /Ot.Para obter mais informações, consulte Otimizações orientadas a perfil.

x86 específico

O código de exemplo a seguir demonstra a diferença entre as opções pequenas de código de suporte (/Os) e o suporte codificar rapidamente a opção (de**/Ot**):

Dica

A tabela a seguir descreve o comportamento esperado ao usar /Os ou /Ot.Porém, o comportamento do compilador de versão para versão pode resultar em otimizações diferentes para o código abaixo.

/* differ.c
  This program implements a multiplication operator
  Compile with /Os to implement multiply explicitly as multiply.
  Compile with /Ot to implement as a series of shift and LEA instructions.
*/
int differ(int x)
{
    return x * 71;
}

Conforme mostrado no fragmento de código de máquina em, quando DIFFER.c será criado para o tamanho (/Os), o compilador implementa a expressão de multiplicação na instrução de retorno explicitamente como uma multiplicação para gerar uma sequência curto mas mais lenta de código:

   mov    eax, DWORD PTR _x$[ebp]
   imul   eax, 71                  ; 00000047H

Como alternativa, quando DIFFER.c estiver sendo compilado para a velocidade**/Ot**(), o implementa do compilador a expressão de multiplicação na instrução de retorno como uma série de turno e instruções de LEA gerar uma sequência rápido e mais longa de código:

   mov    eax, DWORD PTR _x$[ebp]
   mov    ecx, eax
   shl    eax, 3
   lea    eax, DWORD PTR [eax+eax*8]
   sub    eax, ecx

Específico END x86

Para definir esta opção do compilador no ambiente de desenvolvimento do Visual Studio

  1. Abra a caixa de diálogo Páginas de Propriedade do projeto. Para obter detalhes, consulte Como abrir páginas de propriedade do projeto.

  2. Clique na pasta C/C++.

  3. Clique na página de propriedades de Otimização .

  4. Modifique a propriedade de Favoreça Tamanho Ou Velocidade .

Para definir essa opção do compilador via programação

Consulte também

Referência

/O opções (otimizar código)

Opções do compilador

Definindo opções do compilador