Você pode ser uma previsão vítima ramo!

fundo

Um comprimento N = 1000000 convencional matriz um [N], cada elemento no intervalo 0-255. Exigir que todos os elementos de menos do que 128 é definido como 0, o elemento 128 definido é maior do que ou igual a 1

É fácil escrever tal código para iterate

for (i = 0; i < N; i++) {
    if (a[i] < 128) {
        a[i] = 0;
    } else {
        a[i] = 1;
    }
}

Pense em um problema, uma matriz desordenada e ordenada, velocidade de execução deste código irá afetá-lo? À primeira vista, não parece, mas o tempo de execução real pode ser diferente 3-4 vezes.

Porque é através da matriz para determinar os elementos. Atravessando um conjunto ordenado de velocidade vai ser várias vezes mais rápido do que um conjunto desordenado isso?

Você pode ser uma previsão vítima ramo!

trem

Considere-se um desvio de trem, um administrador precisa para alternar o joystick para a esquerda ou para a direita para fazer o movimento do trem.
Mas os administradores não quer que o trem para vir a saber em que direção para avançar. Que existem dois métodos:

1, o trem parou de chegar ao cruzamento, ele quer dizer que o administrador o caminho a seguir, o administrador de alternância alavancas, o trem reiniciado. Leva cinco minutos

Neste caso, os benefícios do trem nunca mais na direção errada, a desvantagem é que cada trem precisa parar e reiniciar

2, antes que o trem chegou ao desvio, o administrador acho uma direção aleatória.
(2-1) Se você adivinhou-lo, não há necessidade de retardar o trem, pares diretos, leva 0 minutos
(2-2) Se você errar, o maquinista vai Mamalielie invertendo e está indo na direção certa, levou 10 minuto

Considere dois casos extremos: Administrador sempre acertar, então a eficiência do tráfego de trem vai se tornar muito alto
administrador é sempre errado: a eficiência homólogos trem torna-se anormalmente baixo (que ruim também executar)

circunstâncias normais: Um administrador sempre terá uma chance de 50% ou errado palpite, demorado e um pouco esquema diferente.
Administradores fazer algo apenas um pequeno resumo e reflexão, como o trem 16:00, e saiu para ir 19 vezes, andou uma vez para a direita, depois à esquerda adivinhar, podemos aumentar a probabilidade de adivinhar

CPU moderna

Exemplos semelhantes de CPU moderna e acima do trem. O trem é um comando, o administrador é a CPU. Para a instrução de desvio se o tipo, CPU não saber com antecedência qual o ramo irá.
CPU moderna tendem a ter um oleoduto multi-estágio para instruções de processamento, se as necessidades de cada indicações do cartão de comando na agência, à espera de condições para determinar completa, em seguida, ir para baixo, a eficiência será baixo

Portanto, a CPU vai primeiro ramo de prever quando o código não veio para o ramo, o resultado de uma suposição de antecedência e executados para baixo

Se você acertar, não há nenhuma obstrução para continuar, se errar, colocar limpa fora todas as instruções, reprocessado.

Iterator previsor de ramos

A volta de trem para exemplos apenas, administrador prever um trem indo para a esquerda ou para a direita, se é completamente aleatória, então há uma chance de 50% que ele adivinhou, uma chance de 50% enganado, não fazer muito para salvar tempo.

A ideia relativamente simples é que, se deixado em um trem, em seguida, um palpite de que também deixou.

Usando essa estratégia, as ações mais do que trens contínuos estão indo na mesma direção, então a velocidade de acesso se tornará muito rápido.

Outros algoritmos mais avançados, muitas vezes mantém essa idéia.

Voltar ao código

Então, se a matriz é uma espécie de antecedência, ramo preditor pode ser um trabalho muito bom

Matriz 123 .... .... 126.127.128.129.130
palpite TTT ..... TTTFF ....
TTT real ..... TTFFF ....

Filial preditor errado apenas uma vez! (Train única reverter uma vez, outras vezes ele pode rapidamente passar)

Se a matriz é palavras desordenadas

Matriz 11713371401899 ....
palpite TTTFTFF
TTFTFFT real

Assim, a chance de adivinhar se torna baixa (mais trens exigem inverter)

Claro, o previsor de ramos iterativa é o modelo, modelo de previsão real mais simples será mais complicado para garantir taxas mais elevadas acho

O próximo artigo irá mostrar-lhe como evitar tornar-se uma previsão de desvios pelas vítimas habilidades de programação avançadas

Acho que você gosta

Origin www.cnblogs.com/velscode/p/12585171.html
Recomendado
Clasificación