Nos meus cursos de análise numérica, aprendi a analisar a eficiência dos algoritmos contando o número de operações de ponto flutuante (flops) necessárias, em relação ao tamanho do problema. Por exemplo, no texto de Trefethen & Bau sobre Álgebra Linear Numérica, existem até imagens em 3D das contagens de flop.
Agora está na moda dizer que "os fracassos são gratuitos" porque a latência da memória para buscar qualquer coisa que não esteja no cache é muito maior do que o custo de um fracasso. Mas ainda estamos ensinando os alunos a contar falhanços, pelo menos em cursos de análise numérica. Em vez disso, deveríamos ensiná-los a contar acessos à memória? Precisamos escrever novos livros didáticos? Ou o acesso à memória é muito específico da máquina para gastar tempo? Qual será a tendência de longo prazo em termos de fracasso ou acesso à memória?
Nota: algumas das respostas abaixo parecem estar respondendo a uma pergunta diferente como "Devo reescrever obsessivamente minha implementação para salvar alguns fracassos ou melhorar o desempenho do cache?" Mas o que estou perguntando é mais parecido com " É mais útil estimar a complexidade algorítmica em termos de operações aritméticas ou de acesso à memória ?"