könnte jemand mir helfen zu verstehen, wie Festplattensuche funktioniert.Datenbank Struktur & Festplatte suchen Zeit Verwirrung
Ich habe eine kleine binäre Datenbank-Datei, die Leistung lesen unbedingt erforderlich ist. Wenn ich ein paar Bytes in der Datei überspringen muss, ist es schneller, seek() zu verwenden oder() zu lesen und dann die unerwünschten Daten zu verwerfen.
Wenn die durchschnittliche Suchzeit einer Festplatte 10ms beträgt und die Lesegeschwindigkeit 300MB/s beträgt, berechnet ich, dass es schneller zu lesen ist() als seek() mit einem Wert kleiner als 3MB. Ist wahr? Gibt es einen Overhead beim Ausführen eines neuen Suchvorgangs, den ein vorhandener Stream nicht lesen kann?
Welche sind Ihrer Meinung nach eine geeignetere Dateistruktur für einen Index?
Entry1:Value:PointerIntoToData
Entry2:Value:PointerIntoToData
Entry3:Value:PointerIntoToData
Data, Data, Data
Or
Entry1:Value:Data
Entry2:Value:Data
Entry3:Value:Data
Wenn ein Eintrag gelesen wird, wenn der Wert nicht korrekt ist, wird er ignoriert. Wenn Sie also die Datei streamen, ist es schneller: 1. Wenn ein Eintrag nicht benötigt wird, verwenden Sie seek(), um ihn zu überspringen. 2. Wenn ein Eintrag nicht benötigt wird, lesen Sie ihn und verwerfen Sie die Daten 3. oder verwenden Sie die erste Struktur , wenn ein Eintrag erforderlich ist, seek() in ein Daten-Repository am Ende.
Eintrag ist 4 Byte-Wert 8 Byte & Daten 12KB
Prost
Nein ich habe das Programm noch nicht getestet, es sucht immer noch in verschiedenen Dateistrukturen. Jede Millisekunde zählt, mich interessiert das theoretische Maximum. Also denkst du, dass ich eine funktionierende Testumgebung brauche, um das herauszufinden? Die Festplatte kann unter Last von einem anderen Prozess sein. Danke – user72523
Wenn, wie Sie behaupten, jede Millisekunde zählt, versuchen Sie, die Datenbank in den Speicher zu lesen. Sie sagen, es ist klein (Sie sagen 3M), also sollte das leicht in Ihren Systemspeicher passen. Sie müssen jedoch noch feststellen, ob die Geschwindigkeit eine reale oder eingebildete Anforderung ist; Warum brauchen Sie die Geschwindigkeit? –
Sehr selten und nur bei pathologischen Konfigurationen habe ich Hardware-Eigenschaften gesehen, die für die Optimierung der Software-Leistung nützlich sind, außer auf sehr kurze Sicht. Und niemals bis nach gründlichen Tests. Hardware-Änderungen werden zu schnell verschoben, um die Liste der "Dinge, die Sie ausprobieren müssen" zu verschieben. – dkretz