Wenn Sie Dolphin mit Baloo genauer betrachten, scheint es, als würden die Metadaten jeder Datei in ihrer Suchdomäne nachgeschlagen, selbst wenn Sie eine einfache Suche nach Dateinamen durchführen. Wenn ich den file.soProzess nachverfolge lstat, werden für jede Datei und sogar für Einträge Aufrufe an getxattrund getxattrwieder ..angezeigt. Diese Systemaufrufe rufen Metadaten zu der Datei ab, die an einem anderen Ort als dem Dateinamen gespeichert sind (der Dateiname wird im Verzeichnisinhalt gespeichert, die Metadaten befinden sich jedoch im Inode ). Das mehrmalige Abfragen der Metadaten einer Datei ist kostengünstig, da sich die Daten im Festplatten-Cache befinden. Es kann jedoch einen signifikanten Unterschied zwischen dem Abfragen der Metadaten und dem Nichtabfragen der Metadaten geben.
findist viel schlauer. Es wird versucht, unnötige Systemaufrufe zu vermeiden. Es wird nicht aufgerufen, getxattrda nicht anhand erweiterter Attribute gesucht wird. Wenn es ein Verzeichnis durchläuft, muss es möglicherweise lstatnicht übereinstimmende Dateinamen aufrufen, da dies ein Unterverzeichnis für die rekursive Suche sein kann (dies lstatist der Systemaufruf, der Dateimetadaten einschließlich des Dateityps wie regulär / directory / symlink /… zurückgibt). Es findhat jedoch eine Optimierung: Es erkennt anhand der Verbindungsanzahl , wie viele Unterverzeichnisse ein Verzeichnis hat , und beendet den Aufruf, lstatsobald es weiß, dass es alle Unterverzeichnisse durchlaufen hat. Insbesondere in einem Blattverzeichnis (einem Verzeichnis ohne Unterverzeichnisse)findÜberprüft nur die Namen, nicht die Metadaten. Darüber hinaus behalten einige Dateisysteme eine Kopie des Dateityps im Verzeichniseintrag, sodass findsie nicht einmal aufrufen müssen, lstatwenn dies die einzigen Informationen sind, die sie benötigen.
Wenn Sie findOptionen ausführen, bei denen die Metadaten überprüft werden müssen, werden zwar mehr lstatAufrufe ausgeführt, es wird jedoch trotzdem kein lstatAufruf für eine Datei ausgeführt, wenn die Informationen nicht benötigt werden (z. B. weil die Datei durch eine frühere Bedingung ausgeschlossen ist) passend zum Namen).
Ich vermute, dass andere GUI-Suchwerkzeuge, die das findRad neu erfinden, weniger clever sind als das Kommandozeilen-Dienstprogramm, das jahrzehntelang optimiert wurde. Zumindest Dolphin ist clever genug, um die Suchdatenbank zu verwenden, wenn Sie "überall" suchen (mit der Einschränkung, dass die Ergebnisse möglicherweise nicht mehr aktuell sind).