2017-07-10 1 views
2

"Ein Array von Bytes zu einem Zeitpunkt zu lesen ist viel schneller als das Lesen von einem Byte zu einer Zeit"
Ich sah den Satz there, während ich versuchte, für Input-Stream zu lernen. Warum ist das so?Warum ist das Lesen und Array von Bytes gleichzeitig schneller als das Lesen eines Bytes?

+1

Dies kann in eine breite Diskussion geraten. Grundsätzlich ist das Lesen von Chunks aufgrund der Computerarchitektur, Elektronik und wer weiß was noch viel schneller als das Lesen eines einzigen Bytes. – Kayaman

+7

Was ist schneller? 1. Nehmen Sie ein Buch auf, lesen Sie * einen Buchstaben *, legen Sie das Buch ab, wiederholen Sie es. 2. Nimm ein Buch auf, lies einen * ganzen Satz *, lege das Buch ab, wiederhole es. – QBrute

+0

Wow! Danke für die perfekten Antworten. –

Antwort

5

Es ist nicht so, dass ein Array von 50 Bytes schneller ist, als 1 Byte zu erhalten. Es ist so, dass es im Laufe der Zeit schneller ist, 1.000.000.000 Datenbytes in 50er-Schritten zu erhalten als 1.000.000.000 Byte nacheinander.

Es ist der gleiche Grund, warum wir nicht für eine Sache auf einmal in den Supermarkt gehen.
Es ist die Reise, die die meiste Zeit braucht, nicht die Menge der Lebensmittel, die wir bekommen.
(Lebensmittel sind Bytes in diesem Beispiel, und die Auslösung ist das Abrufen von Daten aus dem Speicher)

+2

Vielen Dank für Ihre Antwort mit einem schönen Beispiel :) –

+1

Es ist auch erwähnenswert, dass dies stark von der Art des Eingangs Dampf abhängt. Einer, der auf einem In-Memory-Byte-Array basiert, wird sehr schnell sein, sogar für ein Byte zu einem Zeitpunkt. Einer, der auf einer Datei basiert, wird mehr von Chunking profitieren. Die Analogie hängt davon ab, wie weit die Lebensmittelgeschäfte entfernt sind. Deshalb kaufen wir viele Lebensmittel auf einmal, aber es reicht, wenn wir nur eine Flasche aus dem Kühlschrank holen, selbst wenn wir in ein paar Minuten eine zweite Flasche brauchen. – yshavit

Verwandte Themen