Indução do Laço e Redução da Força são técnicas de otimização de laços (for, while, ...), normalmente, empregadas pelos compiladores.
Seja o seguinte laço,
for(i = 0; i < 1000000; i++) {
vetor[i] = 0;
}
Cada elemento da variável vetor tem um tamanho x, assim, para acessar cada elemento é necessário efetuar a seguinte operação de multiplicação (base + i * x). Em vez de usar os índices para acessar os elementos, pode-se aplicar a seguinte técnica:
1. endAddress = &vetor[1000000];
2.
3. for(pointer = vetor; pointer < endAddress; pointer++) {
4. *pointer = 0;
5. }
Na linha 1 é obtido o endereço de memória do último elemento que desejamos acessar do vetor. Na linha 3 o ponteiro pointer recebe o endereço inical do vetor e a operação pointer++ realiza o incremento para o endereço de memória da variável seguinte, eliminando a lenta operação de multiplicação.
O processo de criar novas variáveis a partir das variáveis do laço é chamado de Indução do Laço. Devido a indução fazer com que menos operações sejam realizadas ocorre a Redução da Força.
Normalmente, os compiladores automaticamente induzem o laço.
Passed in SCBCD 5 exam
Há 14 anos
Nenhum comentário:
Postar um comentário