Domanda

Sto lavorando su un'applicazione di prova su piattaforma Android. Testare la scrittura / lettura di velocità al sdcard. Scrivo in linguaggio C con interfaccia NDK.

Per prima cosa ho una scrittura per-loop per creare 256 file con 512 byte casuali in ciascuno. Questa parte funziona bene. I file aperto con la bandiera O_CREAT | O_WRONLY |. O_SYNC e modalità 0666. Dopo chiamata di scrittura, lo faccio sync () per assicurarsi che i dati vengono scritti sulla scheda

Poi ho scrivere un altro 2 livelli per-loop per leggere questi file in regime di prova. Io uso O_RDWR | O_SYNC per aprire il file. Quindi chiamare read ().

Questa è la cosa: se è la prima volta che faccio funzionare la parte di lettura. Il primo ciclo per leggere prendere più tempo rispetto al dopo. Sono sicuro che è perché dopo il primo ciclo, il programma leggere la cache non è il vero carta fisica.

Ho cercato O_DIRECT bandiera a leggere. Ma errore con EINVAL. Nella pagina di manuale di apertura, si dice forse è a causa di questa funzione non implementa dalla piattaforma.

Avete qualche idea su come leggere con no-cache in Android?

È stato utile?

Soluzione

Si può avere bisogno di un telefono radicata a disabilitare la cache-a livello di sistema operativo.

http://wiki.cyanogenmod.com/index.php?title=SDCardSpeedTests

Che si occupa anche di fare operazioni su larga abbastanza per sopraffare i buffer on-card.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top