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.

powered by IMHO 1.2