巨大ファイルの取り扱いに絡んでいくつかNo.05142
tamurk さん 10/02/11 20:16
 
お疲れ様です。いつもお世話になっております。

主に巨大ファイルの取り扱いに絡んでいくつか要望がありますので
まとめて書かせていただきます。

1、一行の最大幅を数万桁オーダーに設定できると助かります。

例えば、テキスト形式で整形されている巨大な表を扱わねばならない
ときに、最大桁が4000ですと、折り返して表示されてしまい、
表として見づらくなってしまいます。

2、秀丸で開いている巨大ファイルが外部で更新された後の再読み込み
時にも、部分読み込み用のダイアログが表示されると助かります。

例えば巨大なログファイルを秀丸で部分的に読み込んだ後、
そのファイルが外部で更新されると、秀丸が再読み込みしますが、
この際には部分読み込み用のダイアログが表示されずに、
すべて読み込もうとします。そうではなく、改めて部分読み込み用
ダイアログが表示されるか、同じ位置とサイズの部分を再読み込み
していただけるとうれしいです。

3、最大行数がもっと大きく設定できると助かります。

現在は部分読み込みがありますのでなんとかなるのですが、
できれば1000万行の制限がなくなるとうれしいです。

4、巨大ファイルの読み込み中に中断できるとうれしいです。

5、巨大ファイルの読み込み後の検索など、時間のかかる処理の
中断ができるとうれしいです。

6、grepの速度が更に高速になると助かります。
(これは巨大ファイルに限りませんが…。)

grepの際、ヒットするたびに該当行が表示されますが、たくさん
ヒットするような場合、画面の描画が足かせとなっているようで、
遅く感じることがあります。
grep中にウィンドウを最小化すると改善されるようですが、
できれば画面の更新を抑止するオプションや、あるいは画面の更新を
ヒット毎ではなくたとえば0.3秒毎とかにまとめてかけるなどの動作が
あればうれしいです。

7、あと、細かい話で恐縮ですが、部分読み込み時に行番号左に+が
表示されますが、行数が100万行を超えると、+が消えてしまい
ます。特に実害があるわけでもないですし、仕様かもしれませんが、
一応ご報告させていただきます。

よろしくお願いします。

[ ]
RE:05142 巨大ファイルの取り扱いに絡んでNo.05143
Iranoan さん 10/02/11 21:31
 
 tamurk さん今日は、Iranoan です。
> grepの際、ヒットするたびに該当行が表示されますが、たくさん
> ヒットするような場合、画面の描画が足かせとなっているようで、
> 遅く感じることがあります。
> grep中にウィンドウを最小化すると改善されるようですが、
 ここにだけ反応します。
 これに関しては、「最小化して実行」の ON が対応するオプションですね。
 当然、ご存じだとは思いますが、これを OFF にしつつ、高速化する為に
> ヒット毎ではなくたとえば0.3秒毎とかにまとめてかけるなどの動作が
といったオプションや処理を加えるのは、なんだか本末転倒な気がします。描
画するかの判定にも時間がかかるので。


 個人的に私は、マクロで書けば
//------------------------------------------------------------
searchdown "(?<![a-z])[a-z]+(?![a-z])", regular;
while( result ){
  finddown;
}
//------------------------------------------------------------
に当たる処理が速くなると助かります。上記の文字列でなくとも、「見つから
なくなるまで処理」は良くやるので。また現状だと、全部全角文字であっても、
長文だと、上記の処理は時間がかかるんですよね.....。

[ ]
RE:05143 巨大ファイルの取り扱いに絡んでNo.05145
tamurk さん 10/02/12 09:15
 
Iranoanさん、こんにちは。

「最小化して実行」のオプションは出力先をアウトプット枠に
していると効果が無いようなんです。ちゃんと書くべきでしたね。

0.3秒云々というのは、ウィンドウの再描画に時間がかかっている
ようですので、検索結果はとりあえずメモリに保持しておいて、
タイマーイベントでときどきたまった内容を描画するようにすれば
体感速度が改善すると思ったのですが。やはり、途中結果が
それなりに見えるの方がうれしいですので。

描画するかの判定としては、タイマーイベントのハンドラで、
検索結果を保持する用のバッファになにかあればそれを出力する、
みたいな感じであれば、それが再描画よりも重い足かせには
ならないんじゃないかと思います。

秀丸さん:
+の表示云々については、オプションで行数の
最大桁数を設定できることを見逃しておりました。
これで解決いたしました。失礼しました。

よろしくお願いします。

[ ]
RE:05145 巨大ファイルの取り扱いに絡んでNo.05152
秀丸担当 さん 10/02/12 11:28
 

いろいろご意見ありがとうございます。
大変参考になります。

>1、一行の最大幅を数万桁オーダーに設定できると助かります。

ここは言われる通り秀丸エディタの弱点とするところであり、今後の課題です。
増やせるように検討しなくてはならないと感じています。

>2、秀丸で開いている巨大ファイルが外部で更新された後の再読み込み
>時にも、部分読み込み用のダイアログが表示されると助かります。

「再読み込み」コマンドでは範囲を維持して読み込むのに対して、タイムスタン
プのチェックによる再読み込みでは全部読み込んでしまっていました。
少なくとも全部読み込んでしまうのはまずかったです。
ご指摘ありがとうございます。
とりあえず、「再読み込み」コマンドと同様に同じ範囲で読み込むように修正さ
せていただきます。ダイアログを出すのはまた必要性に応じて考えたいと思いま
す。

>3、最大行数がもっと大きく設定できると助かります。

一時増やそうとしたことがあったのですが、プログラム的な都合上32bit版では
これ以上増やすとアドレス空間が足りないということがありました。
64bit版ではアドレス空間の枯渇が無いので1億行まで設定可能になっています。
ただ、あまり増やすと動作が重くなるかもしれないです。
このあたりも課題でした。

>4、巨大ファイルの読み込み中に中断できるとうれしいです。

[その他]→[動作環境]→[ファイル]→[高速化]で、「ファイルサイズが大きいと
き裏で読み込みをする]がONになっていると、中断してファイルを閉じることが
可能になっています。

>5、巨大ファイルの読み込み後の検索など、時間のかかる処理の
>中断ができるとうれしいです。

検索は確かに中断できないです。
こちらも将来バージョンの課題とさせていただきます。

>6、grepの速度が更に高速になると助かります。
>(これは巨大ファイルに限りませんが…。)

アウトプット枠でなければIranoanさんも言われている通り、最小化で描画によ
る足かせは無くなると思います。
アウトプット枠の場合は確かに意味無いと思います。
言われているようなタイマーを使う方法であれば0.3秒くらいであれば表示が遅
れると感じることも少なく、かつ大量にある場合は高速になるかもしれないです。
V8.00ではいまの段階ではわかりませが、今後のネタとして参考にさせていただ
きます。

[ ]
RE:05152 巨大ファイルの取り扱いに絡んでNo.05160
tamurk さん 10/02/12 16:40
 
お世話になっております。
修正・ご検討いただけるということで、大変ありがとうございます。

巨大ファイル読み込みの中断については、閉じてしまえばよかったのですね。
ご教示ありがとうございます。

ただ、ときどき、現在読み込まれている範囲が見られればよいので
ファイルを閉じずに読み込みを中断したい、ということがありますので、
できればそのような機能があればうれしいです。
もしよければご検討くださいませ。

よろしくお願いします。

[ ]