·
WinMergeについて
今日WinMergeを使ってディレクトリ間のファイルの差異を調べたときに思ったこと。
- 比較結果をテキストでエキスポートできない
- 仕方なく比較結果をクリップボードにコピーしようと思ったらやたら時間がかかる(たかだか3万件程度なのに数分かかる)
比較結果を書き出せないのは機能がないからだとして、下のは何とかならないものだろうか。
現象としてはまず全選択するためにCtrl+Aすると時間がかかる。(ステータスバーに○件選択中です、と出る) 次に、コピーするためにCtrl+Cするとウインドウが応答しなくなってしまう。
コードを見ていないが、もしかして1ラインごとにクリップボードのバッファを拡張してるんじゃなかろうか。極端な話、毎ラインCStringにAddしてるとか。
もしそうだとしたら、先に全ライン走査して必要なバッファサイズを求めてからバッファを確保すれば解決できそう。
選択のほうもちょっと遅すぎる気がする。
コード見るより他のツール使ったほうが早いな。
追記:
ビンゴ。やっぱりCStringにAddしてた。DirView.cppのCDirView::OnEditCopy()から呼ばれるCDirView::GenerateReport()が該当箇所。