Wenn die Leute reden über sequentielle vs zufällig in eine Datei schreibt, sind sie in der Regel einen Unterschied zwischen dem Schreiben Zeichnen ohne Zwischen sucht („sequential“), im Vergleich zu einem Muster suchen-Schreib-seek-write -Seek-Write usw. ("zufällig").
Die Unterscheidung ist sehr wichtig bei herkömmlichen plattenbasierten Systemen, bei denen jede Suche nach einer Platte etwa 10 ms dauert. Das sequentielle Schreiben von Daten auf dieselbe Festplatte dauert ungefähr 30 ms pro MB. Wenn Sie also sequentiell 100 MB Daten auf eine Festplatte schreiben, dauert dies etwa 3 Sekunden. Aber wenn Sie 100 zufällige Schreibvorgänge von jeweils 1 MB ausführen, dauert das insgesamt 4 Sekunden (3 Sekunden für das tatsächliche Schreiben und 10 ms * 100 = 1 Sekunde für alle Suchvorgänge).
Da jeder zufällige Schreibvorgang kleiner wird, zahlen Sie mehr und mehr eine Strafe für die Datenträger sucht. In dem extremen Fall, in dem Sie 100 Millionen zufällige 1-Byte-Schreibvorgänge durchführen, werden Sie immer noch 3 Sekunden für alle tatsächlichen Schreibvorgänge haben, aber Sie hätten jetzt 11,57 Tage wert, zu tun! Der Grad, in dem Ihre Schreibvorgänge sequentiell oder zufällig sind, kann die Zeit, die für die Ausführung Ihrer Aufgabe benötigt wird, wirklich beeinflussen.
Die Situation ist ein bisschen anders, wenn es um Flash geht. Mit Flash haben Sie keinen physischen Festplattenkopf, den Sie bewegen müssen. (Dies ist, wo die 10ms suchen Kosten von einer traditionellen Festplatte kommt). Flash-Geräte neigen jedoch dazu, große Seitengrößen zu haben (die kleinste "typische" Seitengröße beträgt ungefähr 512 Bytes gemäß wikipedia, und 4K-Seitengrößen scheinen ebenfalls üblich zu sein). Wenn Sie also eine kleine Anzahl von Bytes schreiben, hat Flash immer noch einen Overhead, da Sie eine ganze Seite auslesen müssen, die Bytes, die Sie schreiben, ändern und dann die gesamte Seite zurückschreiben müssen. Ich kenne die charakteristischen Zahlen für den Blitz nicht von oben. Aber die Faustregel ist, dass bei Flash, wenn jeder Ihrer Schreibvorgänge im Allgemeinen in der Größe mit der Seitengröße des Geräts vergleichbar ist, Sie dann keinen großen Leistungsunterschied zwischen zufälligen und sequenziellen Schreibvorgängen sehen. Wenn jeder Ihrer Schreibvorgänge im Vergleich zur Seitengröße des Geräts klein ist, wird bei der zufälligen Schreiboperation ein gewisser Mehraufwand angezeigt.
Jetzt für alle der oben genannten, ist es wahr, dass auf der Anwendungsebene viel vor Ihnen verborgen ist. Es gibt Ebenen im Kernel, Disketten-/Flash-Controller usw., die zum Beispiel nicht offensichtliche Suchvorgänge in der Mitte Ihres "sequenziellen" Schreibens einwerfen könnten. Aber in den meisten Fällen wird Schreiben, das auf der Anwendungsebene sequenziell "aussieht" (keine Suchvorgänge, viele kontinuierliche E/A) sequentielle Schreibleistung haben, während Schreiben, das auf der Anwendungsebene "zufällig" aussieht, das (im Allgemeinen schlechtere) Random-Write-Leistung.