Domanda

  1. CreateFileMapping e MapViewOfFile, e poi facciamo I / O con una funzione come memcpy.
  2. Basta usare Lettura / WriteFile.

è il primo più veloce di secondo? Non capisco questo.

Perché è più veloce?
Se usiamo un oggetto sezione, allora possiamo ottenere più benefici di cache di VMM o Cache Manager?

È stato utile?

Soluzione

mappatura della memoria del file è più veloce quando si verifica la pagina fuori, come il file stesso viene utilizzato come stoccaggio paging.

Se la memoria nel file di memoria mappata non viene modificata non v'è alcuna necessità di svuotare la pagina per il file di paging come i dati sono nel file già e le finestre può rileggere la pagina dal disco. file .EXE e .DLL vengono caricati utilizzando questo meccanismo e quindi sono loro stoccaggio pagina.

Se la memoria nel file mappato della memoria viene scritto, quindi la pagina fuori è lo stesso come se fosse stato usato il file di paging. Veloce possibilmente nella stessa posizione su disco viene utilizzato (a ottimizzazioni NTFS).

Le API di pianura consumano file di paging sostenuta memoria per contenere il contenuto del file mentre nella memoria.

In prospettiva leggermente diversa entrambe le API sono ottimizzati come file mappato in memoria vengono può effettivamente essere utilizzato le API di lettura / scrittura di file sotto il cofano in modo da ottenere una micro-ottimizzazione, come si sta utilizzando una minore astrazione

Entrambi i meccanismi impiegheranno il gestore VMM / cache.

Altri suggerimenti

L'utilizzo di ReadFile / WriteFile coinvolge diversi blocco di memoria in più operazioni di copia, quindi sarà più lento, che l'uso di fondi comuni monetari. Un'altra domanda è quanto più lenta sarà - questo è ciò che è necessario misurare se stessi.

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