Articles of micro otimização de

Devo usar String.format () do Java se o desempenho é importante?

Nós temos que construir Strings o tempo todo para a saída de log e assim por diante. Nas versões do JDK, aprendemos quando usar o StringBuffer (muitos anexos, thread safe) e o StringBuilder (muitos anexos, não thread-safe). Qual é o conselho sobre o uso de String.format() ? É eficiente, ou somos forçados a ficar com […]

Divisão de ponto flutuante vs multiplicação de ponto flutuante

Existe algum ganho de desempenho (não micro-optimização) codificando float f1 = 200f / 2 em comparação com float f2 = 200f * 0.5 Um professor meu me disse há alguns anos que as divisões de ponto flutuante eram mais lentas que as multiplicações de ponto flutuante sem elaborar o porquê. Esta afirmação vale para a […]

O que todo programador deve saber sobre memory?

Eu estou querendo saber quanto do que cada programador deve saber sobre memory de Ulrich Drepper de 2007 ainda é válido. Também não consegui encontrar uma versão mais recente que 1.0 ou uma errata.

Instrução INC vs ADD 1: Isso importa?

Da resposta de Ira Baxter, por que as instruções INC e DEC não afetam a Carry Flag (CF)? Principalmente, eu fico longe do INC e DEC agora, porque eles fazem atualizações de código de condição parcial, e isso pode causar estranhas barracas no pipeline, e ADD / SUB não. Então, onde não importa (a maioria […]

O MOV do x86 pode realmente ser “grátis”? Por que não consigo reproduzir isso?

Eu continuo vendo pessoas afirmarem que a instrução MOV pode ser livre em x86, por causa da renomeação de registradores. Para a vida de mim, não posso verificar isso em um único caso de teste. Cada caso de teste eu tento desmembrá-lo. Por exemplo, aqui está o código que estou compilando com o Visual C […]

Como exatamente os registradores parciais no Haswell / Skylake funcionam? Escrever AL parece ter uma dependência falsa do RAX, e o AH é inconsistente

Esse loop é executado em uma iteração por 3 ciclos no Intel Conroe / Merom, com gargalo na imul transferência como esperado. Mas em Haswell / Skylake, ele é executado em uma iteração por 11 ciclos, aparentemente porque a setnz al tem uma dependência do último imul . ; synthetic micro-benchmark to test partial-register renaming […]