UnDupは対象ファイル数が増えると、極端に速度が落ちていく印象です。

実は、UnDupに似せたUIの自作のファイル重複ツールを途中まで開発して
もう3年くらい放置しています。

ファイルの完全比較による重複ファイルの検索アルゴリズム部分しか作り
込んでいませんが、手元にあるテストデータでベンチマークしてみたところ、
おおむねUnDupより2〜3倍くらい速いです。

テストに使ったデータはネットから落とした画像ファイルで、対象ファイル
総数が約32000個(容量の合計は約100GB強)、そのうち重複ファイルは465種類
(937個)で、重複ファイルのサイズは180KB〜26MB(合計では2.7GB)とまちまち。

上記の条件で、UnDupだと完全一致(1pass)で5分ちょっと掛かりますが、作り
かけの自作のツールだと1分30秒もかかりません。 ただし、再検索でも毎回
ディレクトリ探索とファイル読み込みを行うので、2回目以降も検索速度は
ほとんど変わりません。

ちなみにFileMany(Ver 1.4.3.1b)により完全比較(MD5を含む)だと、ハッシュ
のない初回で4分ちょっとでした。

完全に突き合せての比較はしていませんが、重複結果の種類とファイル数は
他のソフトと同じです。

VC++(MFC)のダイアログベースアプリで、ソートは標準ライブラリのqsortを
呼んでいます。 ただし、検索結果をバッファへ記憶する際に配列要素の拡張
でオブジェクトのコピーが発生しないように注意を払い、すべてポインタ管理
にしています。(ソートも実体ではなくポインタを並べ替えるので要素が増え
ても速い)