Nei miei corsi di analisi numerica, ho imparato ad analizzare l'efficienza degli algoritmi contando il numero di operazioni in virgola mobile (flop) di cui hanno bisogno, in relazione alla dimensione del problema. Ad esempio, nel testo di Trefethen & Bau sull'algebra lineare numerica, ci sono persino immagini 3D dei conteggi del flop.
Ora è di moda affermare che "i flop sono gratuiti" perché la latenza della memoria per recuperare qualsiasi cosa non presente nella cache è molto maggiore del costo di un flop. Ma stiamo ancora insegnando agli studenti a contare i flop, almeno nei corsi di analisi numerica. Dovremmo insegnare loro invece a contare gli accessi alla memoria? Dobbiamo scrivere nuovi libri di testo? O l'accesso alla memoria è troppo specifico per la macchina per passare il tempo? Qual è la tendenza a lungo termine in termini di floppaggi o accesso alla memoria?
Nota: alcune delle risposte seguenti sembrano rispondere a una domanda diversa come "Dovrei riscrivere ossessivamente la mia implementazione per salvare alcuni flop o migliorare le prestazioni della cache?" Ma quello che sto chiedendo è più sulla falsariga di " È più utile stimare la complessità algoritmica in termini di operazioni aritmetiche o accessi alla memoria ?"