Die Verwendung eines Hash ist aus Performance-Sicht weder grundsätzlich gut noch grundsätzlich schlecht.
Um einen Hash überhaupt zu erstellen, müssen die Dateien komplett eingelesen werden. Das sollte also überhaupt nur dann erfolgen, wenn andere, schneller zu prüfende Kriterien (z.B. Dateigröße) eine mögliche Übereinstimmung ergeben.
Aber selbst dann ist ein Hash nicht unbedingt angebracht. Wenn man z.B. nur zwei Kandidaten für eine Übereinstimmung hat, ist es wesentlich effizienter, einfach nur beide Dateien einzulesen und beim ersten gefundenen Unterschied abzubrechen. Man darf auch nicht vergessen, dass ein gleicher Hash nicht automatisch bedeutet, dass der Dateiinhalt gleich ist. Wenn man also Hashes benutzt, und dabei Duplikate findet, muss man diese Dateien dann nochmal auf "konventionelle" Weise vergleichen.
Wenn man natürlich Hashinformationen bereits vorliegen hat, sei es aus dem Dateisystem oder aus der Datei selbst, sollte man diese auch benutzen. Aber auch hier muss man zuletzt immer noch Byte für Byte vergleichen.