Capitolo 8. I/O asincrono
Questo lavoro è stato tradotto utilizzando l'AI. Siamo lieti di ricevere il tuo feedback e i tuoi commenti: translation-feedback@oreilly.com
Finora ci siamo concentrati sulla velocizzazione del codice aumentando il numero di cicli di calcolo che un programma può completare in un determinato tempo. Tuttavia, nell'era dei big data, il collo di bottiglia può essere rappresentato dal trasferimento dei dati al codice, piuttosto che dal codice stesso. In questo caso, il programma viene definito I/O bound; in altre parole, la velocità è delimitata dall'efficienza dell'input/output.
L'I/O può essere piuttosto pesante per il flusso di un programma. Ogni volta che il tuo codice legge da un file o scrive su un socket di rete, deve fare una pausa per contattare il kernel, richiedere che la lettura avvenga effettivamente e poi aspettare che venga completata. Questo perché non è il tuo programma ma il kernel a eseguire l'operazione di lettura vera e propria, dato che il kernel è responsabile della gestione di qualsiasi interazione con l'hardware. Il livello aggiuntivo potrebbe ...