Attualmente sto sviluppando un progetto con SDL. In pratica disegna e sposta immagini (superfici) sullo schermo.Qual è il modo più rapido per cancellare un blocco di memoria (o una superficie SDL)?
Per spostare un'immagine senza lasciare una traccia, è necessario prima rimuovere la superficie schermo, più o meno come glClear(), e sto facendo attualmente con un semplice ciclo for iterazione sopra pixel della superficie (anche disegno una scatola nera sulla superficie o memset).
Mentre le soluzioni precedenti funzionano bene per le piccole superfici, diventano sempre più lente man mano che la superficie si ingrandisce, quindi ho cercato il modo più veloce per cancellare (zero) un blocco di memoria.
Inoltre, un amico ha sottolineato che l'utilizzo delle istruzioni SIMD poteva fare il lavoro molto velocemente, ma l'ultima volta che ho fatto ASM era su un 8085, qualsiasi intuizione su questo potrebbe anche essere utile.
Beh, è un po 'strano eseguire SDL su un microcontrollore PIC, dopo tutto, e il PIC non ha SIMD. –
YMMV. La mia esperienza è che memset è abbastanza lento. Quelli che ho guardato all'origine per fare solo set di byte. Ho avuto un grande successo scrivendo il mio che (per aree più grandi) usa scritture più grandi per le sezioni centrali (solo usando piccole scritture alle estremità come necessario). –