Per la serie "come divertirsi lavorando", oggi ho dovuto
affrontare un problemino molto sfizioso: in azienda, il dipartimento beni
culturali, adotta uno scanner laser 3D che data un'area estrae delle proiezioni
di punti salvandole su dei file ASCII in cui ad ogni riga, terminata da
CrLf, corrisponde un punto.
Un tecnico incauto ha spinto troppo la scansione generando dei
file da 1GB contenenti 34 milioni di punti. Non potendo rifare la scansione,
sono venuti da me chiedendomi se era possibile scrivere un programmino che
togliesse un certo numero di punti n ogni m in modo da
diminuire le dimensioni totali dei file.
Il programmino che ho fatto, cercando di adottare tutti gli
stratagemmi possibili per ottimizzare i tempi è in grado di estrarre i 4/5 dei
punti (27 Milioni) in poco più di 135 secondi, copiandoli in uno
StreamWriter mano a mano che li legge dallo StreamReader corrente,
pari a circa 222000 punti al secondo.
Direi niente male.