
超特急で着替えています。
最近のはやてちゃんはちょっと髪の毛長いみたいですね。
ということで髪の毛を長めにしてみたのですが、どう見てもけいおん!の唯にしか見えません。
あれー?w
■プログラムのお話
実はお盆休みにプログラムを作りました。
どんなプログラムかと言いますと、コマンドプロンプトから起動する重複ファイルチェックツールです。
重複画像を削除するために作りました。
動きとしては、任意のフォルダをターゲットに、フォルダ以下のすべてのファイルのハッシュ(CRC32)を計算して、この計算結果をファイル名の末尾に付加します。
で、一通りのファイル名にハッシュをつけたら任意の1つ(または2つ)のフォルダ内の全ファイルについて、ファイルパス、ハッシュ、ファイルサイズの情報を収集し、この情報でファイルの比較を行います。
基本的にはハッシュが異なる限りは別ファイルとして扱い、ハッシュが一致した場合はファイルサイズを比較、さらにファイルサイズも一致してしまったら実際のファイルをバイナリ比較することで重複チェックを行います。(8バイトのデータ比較だけで大体のファイル比較が完了してしまう)
さらに、比較はソート→ハッシュの重複グループ内での線形比較となるのでファイル数に比例した時間しか比較に時間がかかりません。(細かい話は拍手返事の後で)
比較も99.9999%以上がハッシュ比較だけで判定可能なので非常に高速です。(私の環境で比較処理の傾向を測定したときの値、重複ファイルが増えればバイナリ比較率が上がります)
さらに、ファイル名にハッシュ値が残っているので、2回目以降の比較ではハッシュ計算が不要になります。これによりさらに高速化されます。
私の環境では23万件、合計43GBの画像ファイル比較に1分かかりません(ハッシュがすべて付加済みの場合。全ファイルでハッシュ計算すると5分ぐらいかかります)
で、話が長くなりましたが、このプログラム、ほしいという人はいますか?
居るなら公開しても良いかと思ってるのですが。
比較対象のファイル名が一部変わってしまうことに抵抗が無い方ならお勧めです。
あ、Unicodeのフォルダパスを使うのでNT系のOSじゃないと動かないと思います。Windows2000とXPでは動作確認済み。Vistaはうちにないので知りません。多分動くと思いますが。
以下、はくしゅへんじ