Per la scrittura di binari, il trucco che ho trovato più utile è archiviare tutto il binario come un singolo array in memoria e quindi spostarlo tutto sul disco rigido. Fare un po 'alla volta, o un byte alla volta, o un unsigned long long alla volta non è veloce come avere tutti i dati memorizzati in una matrice e usare un'istanza di "fwrite()" per memorizzarla sul disco rigido.
size_t fwrite (const void * ptr, size_t size, size_t count, flusso FILE *);
Rif: http://www.cplusplus.com/reference/clibrary/cstdio/fwrite/
In inglese:.
fwrite ([gamma * di dati memorizzati], [dimensione in byte di matrice di oggetti per i caratteri non firmati -> 1, per lunghi long senza segno -> 8 ], [numero di istanze nell'array], [FILE *])
Controllare sempre i resi per la convalida del successo!
Inoltre, un argomento può essere fatto che avere il tipo di oggetto più grande possibile è il modo più veloce per andare ([unsigned long long]> [char]). Mentre non sono esperto nella codifica di "fwrite()", sento che il tempo di convertire dall'oggetto naturale usato nel tuo codice a [unsigned long long] richiederà più tempo se combinato con la scrittura rispetto a "fwrite() "fare il dovuto con quello che hai.
Indietro quando stavo imparando Huffman Coding, mi ci sono volute alcune ore per capire che c'era una differenza tra [char] e [unsigned char]. Nota per questo metodo che devi sempre usare le variabili non firmate per memorizzare il puro binario.
fonte
2011-12-30 09:07:53
Grazie Fred per i vostri consigli, che mi ha dato una maniglia su dove andare a cercare. –