Ich habe eine sehr große Datei 150 GB. Ich benutze schreibgeschützt mmap
und ich führe binäre Suche in die Datei.Optimierung von mmap auf sehr große Datei
Derzeit binäre Suche ziemlich langsam.
Allerdings denke ich über folgende Optimierung nach - wenn ich (Disk-Suche) einen Wert überprüft, sind alle Werte "um" diesen Wert bereits in den Speicher, weil sie zum gleichen Festplattenblock gehören. Anstatt irgendwo anders in der Datei zu springen, kann ich "nahe" Werte überprüfen und danach springen.
Lohnt sich diese Optimierung?
Auch wie kann ich abschätzen, wo Plattenblock "endet".
Eine andere Richtung, zu der diese Argumentationskette führen kann, ist Cache-unwissende Datenstrukturen. Diese erfordern nicht, dass Sie die Seitengröße kennen ... und auch die Vorteile mehrerer CPU-Cache-Ebenen nutzen. Weitere Informationen finden Sie unter https://blogs.msdn.microsoft.com/devdev/2007/06/12/cache-blivious-data-structures/. – btilly
'madvise (MADV_RANDOM)' beschleunigen es 60%. Nett, aber immer noch langsam. – Nick