Otimização da linguagem Delphi
1) Valor de retorno do tipo de registro ou array
Os programadores C++ não farão isso porque o valor de retorno será colocado na pilha, resultando em eficiência de tempo e espaço. Delphi não tem esse problema. O valor de retorno é equivalente ao parâmetro Out e o chamador passa o ponteiro da unidade de memória. Portanto, você pode usar valores de retorno de registro ou matriz para aumentar a legibilidade e a conveniência ao escrever expressões.
2) Expressão pública
Delphi extrai apenas expressões comuns dentro de uma linha de instrução. Se uma expressão comum contém uma chamada de função ou acesso a propriedade, ela não é extraída, ou seja, é avaliada duas vezes, porque a extração pode resultar em alteração da semântica.
3) parâmetros const
Quando os parâmetros da função não são alterados, se o comprimento do parâmetro exceder 4 bytes ou for um tipo de interface, string ou array dinâmico, o uso de parâmetros const permite que o compilador o passe no modo de endereço sem modificar a tecnologia de referência.
4) Austeridade
O Delphi alocará o menor espaço possível ao alocar unidades de armazenamento. Se for pequeno o suficiente e puder caber em um registro, geralmente é usada a operação direta com o registro. Por exemplo, ao atribuir registros ou dados com comprimento de 4 bytes, o compilador usará automaticamente registros de 32 bits de acordo com DWord.
5) Operador
A divisão por 2 ou 4 será otimizada para o deslocamento para a direita e a multiplicação por 2 ou 4 será otimizada para o deslocamento para a esquerda, portanto, não há necessidade de usar especificamente operações de deslocamento e um código mais legível pode ser escrito. Mas a multiplicação e divisão por 8 e outros múltiplos de 2 não terão essa otimização.
i := i + 1; e Inc(i);
6) Ponto flutuante
O Delphi não otimiza cálculos de ponto flutuante, mesmo a adição de zero operações não será otimizada e muitas instruções FWAIT serão adicionadas. Portanto, ao escrever operações chave de ponto flutuante, você mesmo deve otimizar as expressões e extrair as expressões públicas. Use variáveis intermediárias o mínimo possível, porque variáveis de ponto flutuante não serão otimizadas e serão gravadas de volta na memória mesmo que não sejam usadas posteriormente. Use assembly se necessário ou considere usar C. No entanto, em geral, não há muita diferença de desempenho entre programas equivalentes de ponto flutuante Delphi e C.
7) com declaração
com pode gerar variáveis intermediárias implícitas para evitar cálculos repetidos
8) Coleção
i em [0..31] é mais rápido que (i >= 0) e (i <= 31)
9) Largura de bits
Quando a compactação não for usada, use inteiro e cardinal, pois SmallInt, ShortInt, Byte, etc. também ocuparão 4 ou 8 bytes quando o byte estiver alinhado. Ainda tem 32 bits no cálculo e deve ser expandido para 32 bits primeiro.