Voglio porre una domanda apparentemente semplice che non riesco a trovare la risposta da nessuna parte. Esiste un algoritmo FAST per l'input e/o l'output di file che può essere compilato con tutti i compilatori C++ conformi agli standard e funziona per tutti i sistemi operativi senza il bisogno di librerie esterne?Algoritmo veloce multipiattaforma per leggere/scrivere file in C++
- Ho scoperto che il modo più veloce è quello di utilizzare i file di memoria mappata, ma non lo farò perché vogliamo che lo stesso pezzo di codice che lavora su tutte le piattaforme
- non possiamo usare le API come Win32 API causa che lo renderà specifico della piattaforma
- non voglio usare c, voglio che l'algoritmo sia solo codice C++ puro con stl se fattibile, non un po 'brutto con intermixato asm hack/trucco
- quadri o esterno le librerie che non appartengono a standart C++ non devono essere utilizzate come wxWidgets, Qt, MFC ecc.
- Il grande empasis di tutta questa domanda è che l'algoritmo è come VELOCE possibile, qualcosa sulla falsariga della velocità di farlo con i file di memoria mappata, ancora più veloce sarebbe fantastico ma so che non è possibile
Hai mai visto qualcosa di così folle essere stato studiato da qualcun altro eccetto me? È possibile un simile algoritmo?
Grazie per eventuali raccomandazioni
concordato. L'unico I/O standard del file C++ è quello della libreria standard, ad es. file di intestazione '' o ''. Se vuoi un I/O veloce, la cosa più importante sarebbe ** non ** leggere/scrivere file un byte alla volta, ma leggere/scrivere grandi blocchi in una volta sola. –
stakx
l'intero file può essere letto tutto in una volta con iostream? offrirebbe un vantaggio in termini di prestazioni, cosa che non penso? non è cstdio a c header? – user258883
La lettura dell'intero file in una volta è ancora più lenta rispetto alla mappatura in memoria. –