Questa domanda deve fare qualcosa con il livello hardware.
Non vi è alcun vantaggio se il file viene elaborato in modo sequenziale. Se il file viene elaborato dalla mappatura, vi è uno spreco extra di memoria allocando memoria ad alcune altre funzioni (variabili ecc.) Rispetto all'elaborazione sequenziale. Il ruolo della gestione della memoria è fatto da un principio chiamato,
principio di località
programmi tendono ad riutilizzare i dati e le istruzioni che sono vicini gli uni agli altri o hanno utilizzato di recente
temporale Località
- articoli si fa riferimento Recentemente sono probabilmente fare riferimento in un prossimo futuro
- Un blocco tendono ad accedere più volte
località spaziale
- Articoli con un indirizzo nelle vicinanze tendono ad essere riferimento ravvicinati nel tempo
- Vicino ai blocchi è possibile accedere
lasciate che vi dia un esempio,
sum = 0;
int array[] = new int[10];
for (int i = 0; i < array.length; i++){
sum += array[i];
}
dati
- elementi dell'array Accesso a sequenziale - località spaziale
- Riferimento somma ogni iterazione - località temporale
Instructi ons istruzioni
- Riferimento sequenziale - località spaziale
- ciclo attraverso l'anello più volte - località temporale
Torna a mettere in discussione, dal momento che i dati nel file sono scritti in modo ordinato nella memoria (come un array) non vi è alcun vantaggio della mappatura perché questa viene trasportata nel modo di localizzazione spaziale come ho descritto in precedenza.
fonte
2015-12-23 04:50:37
Probabilmente no.MMapping aiuta con l'accesso casuale. Hai provato e misurato un beneficio? – zapl
@zapl Preferirei avere un'opinione di esperti su questa particolare domanda rispetto ai test empirici, perché le interazioni del SO per la mappatura della memoria sono complesse e non sono abbastanza esperto per comprendere le diverse ramificazioni. Inoltre, diversi SO possono funzionare diversamente. Fondamentalmente spero che qualcuno esperto nella zona fornisca una risposta autorevole. –
http://stackoverflow.com/questions/45972/mmap-vs-reading-blocks copre alcuni degli aspetti più teorici. I canali dovrebbero essere letti da quando si copia in userspace. Il file diretto alla copia del file potrebbe sfruttare DMA ed evitare l'uso di spazi esterni – zapl