Komfortabler Dateimanager mit vielen Funktionen

Handbremse gelöst

By Sven on 18.12.2007 - 15:14 in SpeedCommander 12

Im Forum haben sich einige Anwender darüber beklagt, dass SpeedCommander beim Anzeigen von Ordnern in Netzwerken nicht gerade fix ist. Mit aktivierter Baumansicht dauert das ganze sogar noch länger.

Nach der Umstellung auf lange Dateinamen habe ich nun die Funktionen, die für die Auflistung von Ordnern zuständig sind, Stück für Stück seziert, um die Gründe für die magere Performance zu finden.

1. Ermittlung der Pidls

SpeedCommander verwendet für die Navigation im Dateisystem normale Pfadnamen, während die Windows-Shell im gesamten Namensbereich sogenannte ITEMIDLISTs verwendet. Ein Pfad wird durch eine oder mehrere aneinandergekettete ITEMIDLIST-Strukturen dargestellt, man spricht hier auch von Pidls (Pointer auf ITEMIDLIST). Viele Shell-Funktionen erwarten nun anstatt dem normalen Pfadnamen eine Pidl, SpeedCommander muss dafür den normalen Pfadnamen (z.B. C:\Test\123.txt) in eine Pidl konvertieren.

Für die Konvertierung verwendete SpeedCommander bisher die dafür empfohlene und in vielen Beispielen verwendete Funktion IShellFolder::ParseDisplayName. Leider ist diese Funktion insbesondere im Netzwerk eine ziemliche Performancebremse, was mir bisher gar nicht so bewusst war. Mit der Eliminierung dieser Performancebremse hat sich die Geschwindigkeit bei der Anzeige von Ordnern in der Dateiliste spürbar erhöht. Dies gilt auch für den lokalen Arbeitsbereich.

2. Baumansicht und Archivdateien

Wenn im Einstellungsdialog auf der Seite Aussehen – Dateien & Ordner die Option Archive im Baum anzeigen aktiviert ist, dann prüft SpeedCommander bei der Zusammenstellung der Baumansicht jede Datei, ob sie ein potentielles Archiv ist. Eigentlich sollte dabei nur die Erweiterung geprüft werden, allerdings hatte sich hier noch eine (mittlerweile unnötige) Abfrage der Dateiattribute eingeschlichen. Durch Deaktivierung dieser Option kann SpeedCommander in der aktuellen Version die einzelnen Baumelemente schneller aufklappen, ab der 12.10 bringt auch eine Aktivierung keine Nachteile mehr.

3. Baumansicht und Netzlaufwerke

In der Baumansicht zeigen kleine Pluszeichen vor dem Ordnersymbol an, ob der Ordner noch weitere Unterordner enthält. In der Netzwerkumgebung wird dagegen vor jedem Ordnersymbol ein kleines Pluszeichen angezeigt, weil die Prüfung auf das Vorhandensein von Unterordnern unter Umständen sehr viel Zeit kosten kann. Erst beim Klick auf den jeweiligen Ordner wird das Pluszeichen gegebenenfalls aktualisiert.

Ab SpeedCommander 12.10 entfällt die Prüfung auch für gemappte Netzlaufwerke, so dass das Aufklappen von Ordnern in der Baumansicht hier deutlich schneller erfolgt.

4. Ermittlung des Speicherplatzes für die Statuszeile

Der in der Statuszeile angezeigte freie und verfügbare Speicherplatz wird bei jeder Auswahländerung in der Dateiliste neu ermittelt. Gerade bei VPN-Verbindungen beansprucht das aber viel Zeit, so dass die Bewegung des Auswahlbalkens unter Umständen sehr zähflüssig verläuft. Ab SpeedCommander 12.10 erfolgt die Ermittlung nur noch bei der Auflistung des Ordners sowie bei Änderungen aufgrund der automatischen Hintergrundaktualisierung.

5. Anzeige des Kontextmenus

Die oben erwähnten Pidls werden auch für die Anzeige des Kontextmenüs der rechten Maustaste benötigt, bisher wurden diese bei jedem Aufruf neu ermittelt. SpeedCommander 12.10 verwendet nun die bereits für die Anzeige ermittelten Pidls, was eine sofortige Anzeige des Kontextmenüs ohne Verzögerung erlaubt.

6. Brotkrumen für Netzwerkumgebung

Bei der Zusammenstellung der Brotkrumenansicht für die Netzwerkumgebung muss SpeedCommander alle Elemente für den gesamten Netzwerkpfad ermitteln. Bis zum Freigabebereich geschieht das auch recht zügig, erst der Bereich von der Freigabe bis zur Netzwerkumgebung selbst kann etwas Zeit in Anspruch nehmen. In der Regel ändert sich diese Information beim Verzeichniswechsel unterhalb der Freigabeebene aber nicht mehr, so dass SpeedCommander 12.10 auf die erneute Ermittlung verzichten kann. Zudem erfolgt die Zusammenstellung der Brotkrumenansicht nun im Hintergrund, damit werden schnelle Ordnerwechsel nicht mehr unnötig blockiert.

Es gibt 5 Kommentare zu diesem Beitrag

Trackback URL | RSS-Feed für Kommentare

  1. Anarchy sagt:

    Genial, immer weiter so :)

  2. hanni sagt:

    warum ist nicht jetzt schon weihnachten :D

  3. Rolf Lanzerath sagt:

    @hanni: Weihnachten war doch erst im Oktober !!! :-)

  4. Justin sagt:

    @sven
    was benutzt du denn jetzt anstelle von IShellFolder::ParseDisplayName?

  5. Sven sagt:

    Sorry, aber alles kann ich auch nicht verraten. :)

Top