ファイルの比較についてNo.31923
Yossi さん 13/01/17 13:37
 
お世話になります。

環境
 WinXP(x86) SP3
 秀丸エディタ 8.21

ファイルの比較をした時なのですが
800万行程度あるファイルを比較させると
「ファイルの比較の色つけ:違いが多すぎます。」
のダイアログが表示されます。
そして、秀丸エディタでは最初に発見された相違箇所から
ファイルの最後まで、全く同じ行も相違のある行もベッタリ
指定色で反転された状態になります。
何とかならないでしょうか?

よろしくお願いします。

[ ]
RE:31923 ファイルの比較についてNo.31925
秀丸担当 さん 13/01/17 15:15
 

違いが多いファイルを作ってみたところ、確かにそうなることがあるのが確認で
きました。
仕組み的にはメモリ確保や比較完了までにかかる時間の関係で、違いの数に上限
があるようになっていて、際限無くするのは難しいと思いますが、上限を増やす
ことは調整で可能だと思います。
比較で色付けするのを作った当初は完了するまで中断できなかったのである程度
すぐ反応する必要がありましたが、現在は中断もでき、また64bit版においては
メモリ確保に余裕もあるので、多くできるように検討してみます。


ちなみに現状ではIKKIさん作の、diffを使った色付けをするマクロを使うと回避
できる方法もあるようです。
色付けすること自体には上限は無いです。

 ColorfulDiff v1.35 ◆ファイルの差分を色分け表示
 http://hide.maruo.co.jp/lib/macro/colorfuldiff135.html

[ ]
RE:31925 ファイルの比較についてNo.31931
Yossi さん 13/01/23 17:46
 
回答ありがとうございます。
返答が遅くなりすみません

IKKIさん作の、diffの概要を拝見しました。
気になるのは以下の説明で
 WinMerge の劣化コピーです。ヘビーな用途にはこれらの専用ソフトを使った方がい
いです。

実は WinMerge で今回のファイルを比較すると WinMergeが落ちます Orz..

[ ]
RE:31931 ファイルの比較についてNo.31934
秀丸担当 さん 13/01/24 15:51
 

IKKIさんがどういう意味で書かれているのかわかりませんが、WinMergeのような
機能が全てあるわけではなく、機能は色付けをするだけという意味のような気が
します。

V8.30β19で、上限を倍(64bit版は3倍)に増やしてみました。
(WinMergeでも落ちるほどのものとなるとうまくいくかわかりませんが)

[ ]
RE:31934 ファイルの比較についてNo.31935
IKKI さん 13/01/24 18:14
 
こんにちは。なんか呼ばれたような気がしたので…。

> >  WinMerge の劣化コピーです。ヘビーな用途にはこれらの専用ソフトを使った方
>がいいです。
>IKKIさんがどういう意味で書かれているのかわかりませんが、WinMergeのような
>機能が全てあるわけではなく、機能は色付けをするだけという意味のような気が
>します。
すみません秀丸担当さん、お手数をおかけしてます。

「劣化コピー」というのは文字通り、「機能も少なければ速度も遅い。存在価値がな
い」という意味です。
秀丸や WinMerge などの内部で高速に行われている処理を、わざわざ diff.exe と V
BScript と秀丸マクロを組み合わせて作ってみたのが ColorfulDiff です。
通常、これを積極的に使うべき理由はありませんし、作者自身も全く使っていません。

800万行のデータというと、仮に1行=100バイトとしても800メガバイトですよね。
これだけ大きなデータの差分をエディタに直接表示して目視で作業するというのは非
現実的というか、私だったら眼精疲労を訴えてボイコットします。
作業の全体像と最終目的がわからないので何とも言えませんが、例えば、少量の差分
が散在している状況であれば diff.exe で差分だけを別ファイルに抽出するとか、何
かしら作業工程そのものを見直す余地があるような気がしますが、いかがでしょうか。

と、横からしゃしゃり出て失礼を申しました。m(_ _)m

[ ]
RE:31935 ファイルの比較についてNo.31945
Yossi さん 13/01/27 00:15
 
秀丸担当さん、IKKIさん こんにちは

コメント有難うございます。

>800万行のデータというと、仮に1行=100バイトとしても800メガバイトですよね。
>これだけ大きなデータの差分をエディタに直接表示して目視で作業するというのは
>非現実的というか、私だったら眼精疲労を訴えてボイコットします。

800MBまではいかないのですが 330MBを超えています。
3Dのモデリングファイルの頂点データを座標ファイルにしたもので
同じある処理を複数のツールで実行した場合に結果が異なるの
ですがどこに差が出るのかを知りたかったというわけです。

WinMergeの場合は左側にサマリーがイメージ表示されていて
そこをクリックすることで該当箇所にジャンプできるのでとても
便利なのですが前述のとおり落ちるので秀丸で開いて差異のある
箇所をジャンプしてゆこうとして上手くゆかなかったというわけです。

diff.exe で差分を取ると差分データだけでも 10MBほどになりますが
適切なオプション設定で工夫すれば何とかなるかもしれないですね
アドバイスに感謝します。

[ ]
RE:31934 ファイルの比較についてNo.31946
Yossi さん 13/01/27 00:50
 
>V8.30β19で、上限を倍(64bit版は3倍)に増やしてみました。
>(WinMergeでも落ちるほどのものとなるとうまくいくかわかりませんが)

ありがとうございます。
V8.30β19で試したところ今度は差分が多すぎるというメッセージが
表示され比較処理が途中で終わってしまいました。

この処理を秀丸でやること事態に無理があるのかもしれないのですが
スコープを設定するか、できる箇所まででもいいので差異のある
箇所を適切に表示してもらえたなら
比較開始位置を下げながら何とかできるかなと思うのですが
どうでしょか?

[ ]
RE:31945 ファイルの比較についてNo.31947
アルビレオ さん 13/01/27 15:58
 
ユーザーのアルビレオです。

>800MBまではいかないのですが 330MBを超えています。
>3Dのモデリングファイルの頂点データを座標ファイルにしたもので
>同じある処理を複数のツールで実行した場合に結果が異なるの
>ですがどこに差が出るのかを知りたかったというわけです。

差分検出はおおまかにいって「比較するファイルのサイズ×もう一方の比較する
ファイルのサイズ」の量を検索することになるのでサイズが大きくなるとどんど
ん遅くなるし、相違点のリストも巨大になるのできついでしょうね。

秀丸エディタでもWinMergeでも可能なら64ビット版を使いたいところです。
64ビット版は使えない、または使ってもうまくいかないならファイルを分割して
やった方がいいと思います。
頂点データならいくつかの大きなセクションに分けることができると思うので、
まずは小さなモデルデータで頂点データの構造を把握して、セクションの区切り
になる文字列を見つけ、それを検索して分割するといった方法が取れると思いま
す。

そうすることでWinMergeが落ちる条件を把握することができるかもしれません。

[ ]
RE:31947 ファイルの比較についてNo.31948
Yossi さん 13/01/27 18:55
 
アルビレオさん こんにちは

>秀丸エディタでもWinMergeでも可能なら64ビット版を使いたいところです。

メインOSがいまだに XP(x86)なもので頭が回っていませんでした。
Win7(x64)で WinMerge 2.12.4+-jp-29 で実行すると問題なく表示することができま
した。
アドバイスありがとうございます。

[ ]
RE:31946 ファイルの比較についてNo.31951
秀丸担当 さん 13/01/28 11:11
 

>この処理を秀丸でやること事態に無理があるのかもしれないのですが
>スコープを設定するか、できる箇所まででもいいので差異のある
>箇所を適切に表示してもらえたなら
>比較開始位置を下げながら何とかできるかなと思うのですが
>どうでしょか?

倍ではだめでしたか。
スコープという意味では、ファイルの一部を開く機能があります。
キー割り当てしたり、メニュー編集で「ファイル」メニューに「ファイルの一部
を開く...」と入れるとできます。
これで一部を開いて一部の比較ということは一応可能です。
ただ、内容によると思いますが、開始位置を合わせるのが少し手間になるかもし
れないです。

[ ]
RE:31951 ファイルの比較についてNo.31952
Yossi さん 13/01/28 14:09
 
>倍ではだめでしたか。
>スコープという意味では、ファイルの一部を開く機能があります。
>キー割り当てしたり、メニュー編集で「ファイル」メニューに「ファイルの一部
>を開く...」と入れるとできます。
>これで一部を開いて一部の比較ということは一応可能です。

いろいろとありがとうございます。
今回の処理はちょっと秀丸にはキツイ内容だったと思います。
でもここで色々アドバイスを頂き助かりました。

また、WinMerge(x86)を落とすような巨大なファイルでも秀丸は
落ちませんでしたからそれだけでもすごいと思いました。
今後とも宜しくお願いします。

[ ]