|
Android - Come testare la velocita' delle microSD |
|
|
|
|
Scritto da Ivan Piffer
|
|
martedì 02 agosto 2011 |
La velocità minima di scrittura continua su una scheda SDHC vuota espressa in MB/s e' quella che si chiama la classe :
| Classe |
Velocità minima di scrittura |
| Classe 2 |
2 MB/s |
| Classe 4 |
4 MB/s |
| Classe 6 |
6 MB/s |
| Classe 10 |
10 MB/s |
Fidarsi?
No.
Uno dei test piu' semplici da fare in Ubuntu e' usando il disk utility in System->Administration
L'ho provato sulla microSD da 16 GB Sandisk comprata su Amazon.co.uk che dovrebbe essere una semplice Classe 2.
Ecco il risultato.
E' andata peggio del previsto... 1.5 MB/s
Ed allora mi sono divertito a scrivere 2 righe di codice in BASH che allego.
Un benchmark che vale quel che vale... ma reale.
sd
#!/bin/bash
#Funzioni per il calcolo del tempo in bash grazie a http://www.unix.com/tips-tutorials/31944-simple-date-time-calulation-bash.html
date2stamp () {
date --utc --date "$1" +%s
}
dateDiff (){
case $1 in
-s) sec=1; shift;;
-m) sec=60; shift;;
-h) sec=3600; shift;;
-d) sec=86400; shift;;
*) sec=86400;;
esac
dte1=$(date2stamp $1)
dte2=$(date2stamp $2)
diffSec=$((dte2-dte1))
if ((diffSec < 0)); then abs=-1; else abs=1; fi
echo $((diffSec/sec*abs))
}
#Variabili
TEMP='/tmp/' # la cartella dove creo i files da copiare (poi vengono cancellati automaticamente)
TARGET='/media/16GB' #la cartella (o device) della quale devo testare la velocità
DIM=1000 #in MB'
NUM=10 #numeri di files da creare e copiare
MB=$((DIM*NUM)) #MB totali copiati
echo ''
echo '######## TEST VELOCITA'' DI SCRITTURA SU DEVICES ########'
echo ''
#Creo i miei files in /tmp
cd $TEMP
for i in $(seq 1 $NUM);
do
#dd if=/dev/zero of=${DIM}MB_${i} bs=1MB count=${DIM} 2>&1 ;
dd if=/dev/zero of=${DIM}MB_${i} bs=1MB count=${DIM} > /dev/null 2>&1 ;
done
#Copio i files in target registrando i tempi
echo '**** Copierò '$MB 'MB in' ${TARGET} '****'
T_INIZIO=$(date +"%T")
echo '**** INIZIO COPIA' $T_INIZIO '****'
cp $TEMP/${DIM}MB_* $TARGET
T_FINE=$(date +"%T")
echo '**** FINE COPIA' $T_FINE '****'
SECONDI=$(dateDiff -s $T_FINE $T_INIZIO)
echo '**** SECONDI IMPIEGATI PER COPIA =' $SECONDI '****'
#SPEED=$((MB/SECONDI))
#SPEED=`echo ''scale=1;$MB/$SECONDI ''| bc -l`
SPEED=$(echo "scale=1; ($MB/$SECONDI)" |bc -l)
echo '****************************************************************************************'
echo 'La velocità misurata è di' $SPEED 'MB/sec per copiare' $NUM 'files da' $DIM 'MB (TOTALE' $MB 'MB)'
echo '****************************************************************************************'
#Faccio pulizia dei files in /tmp/ e in TARGET
rm $TEMP/${DIM}MB*
rm $TARGET/${DIM}MB*
|
|
Ultimo aggiornamento ( giovedì 22 settembre 2011 )
|