高速処理No.05723
電気なまず さん 07/12/31 22:28
 
WindowsX、メモリが2GBのPCで、マクロの高速処理を望んでいます。
(大量のFileが対象)
 ・バッチ化
 ・ステルス化
 ・RAMDISKにファイルを置く
 ・秀丸をRAMDISKに導入
をしてきましたが、処理中にIOをしているようです。
現在1G程度空きがありますので、可能な限りメモリ上で処理をするようにしたいので
すがどのようにすればよろしいでしょうか。
そもそも可能なのでしょうか。
ご教示いただきたく。よろしく願います。
    以上

[ ]
RE:05723 高速処理No.05726
秀丸担当 さん 08/01/04 15:22
 

[その他]→[動作環境]→[パフォーマンス]→[詳細]で、「メモリを使用する最大
サイズ」などを大きくしておけばディスクアクセスが少なくなるかもしれません。
体感速度にどれほど影響があるかはわからないですが。

[ ]
RE:05726 高速処理No.05730
電気なまず さん 08/01/04 22:23
 
>
>[その他]→[動作環境]→[パフォーマンス]→[詳細]で、「メモリを使用する最大
>サイズ」などを大きくしておけばディスクアクセスが少なくなるかもしれません。
>体感速度にどれほど影響があるかはわからないですが。
ご返答ありがとうございます。
既に最大128Mにセットしています。
IOを限りなくゼロにするのは無理かもしれませんね。

[ ]
RE:05730 高速処理No.05731
Kamonohasi さん 08/01/04 22:36
 
こんばんは、カモノハシと申します。横から失礼します。

今のままでは、電気なまずさんの提示された情報がとても少ないので具体的な
対策を指摘する事が難しいと思われます。

・マクロの処理の概要
・ファイルの数
・ファイルのサイズ
あたりが最低でも分からないと。
現状私が思いつくのは、
・バッチ処理でなくマクロ内でループさせる
・バッチで秀丸をキックする時にエンコードを指定する
・ファイルに特定の拡張子を与えて、その拡張子に対する設定を超簡素にする
・バックアップを作成するオプションが切れていない?
とかです。
いかがでしょうか。

[ ]
RE:05731 高速処理No.05733
電気なまず さん 08/01/05 23:14
 
>こんばんは、カモノハシと申します。横から失礼します。
>
>今のままでは、電気なまずさんの提示された情報がとても少ないので具体的な
>対策を指摘する事が難しいと思われます。
>
>・マクロの処理の概要
>・ファイルの数
>・ファイルのサイズ
>あたりが最低でも分からないと。
>現状私が思いつくのは、
>・バッチ処理でなくマクロ内でループさせる
>・バッチで秀丸をキックする時にエンコードを指定する
>・ファイルに特定の拡張子を与えて、その拡張子に対する設定を超簡素にする
>・バックアップを作成するオプションが切れていない?
>とかです。
>いかがでしょうか。
貴重なコメントありがとうございます。
素人が苦し紛れにマクロを組んでいます。うまく説明できていなくて申し訳ありませ
ん。
  ・拡張子に対する設定を超簡素にするとは
    C#用拡張子(.cs)を設けて強調表示のない設定をすればよいということでしょうか
  ・高速バックアップオプションの指定が抜けていました
    tryします。
[補足説明]
  C#のプログラム約500本を色々調べています。平均500ステップ/本程度です。
(詳しくは調べていません)
市販の調査ツールは貧乏で買えません。
無謀にも自力で解決しようとしています。お笑いください。
例えば全メソッドの呼出関係表を作成するマクロです。
    ・grepでメソッド行を抽出(15万行)
    ・定義行と呼出行に分ける
    ・定義行は private | public | internal があるので抽出し
      ファイル名、行番号、メソッド名以外を削除してGet
    ・呼出行はメソッド名ですべて改行しメソッド名のみ残す
    ・grep結果のファイル名(nn): の行は:以降クリア
    ・改行した呼出行(複数)とgrep結果のファイル名(nn):の合体
    ・同様の方式で別途作成したnamespace,クラス定義行と
   Mergeして呼出関係表作成
[設定条件等]
    ・バッチ起動 /h  /xマクロ起動
    ・強調表示Off  config "y-";
    ・disabledraw;
    ・showwindow 0;
 ・grepは ,regular,iconで実行
 ・バッチで秀丸を呼ぶのは一度だけです
この一連の処理に約30分かかっています。
これくらいの規模になりますと、replaceallfast でも正規表現を使った場合、分単
位の処理になっています。
(通常時は驚くほど早いのですが今回はこれを早くしたいのです。)
如何でしょうか

[ ]
RE:05733 高速処理No.05734
アルビレオ さん 08/01/06 00:04
 
ユーザーのアルビレオです。

個人的には秀丸マクロで処理するにはちょっと荷が重いような気がします。
たぶん全メソッドの呼出関係表を作るとなると何度も検索を繰り返していると思
われるので、その部分のI/Oが時間を食っているのでしょうし。

マクロでいろんなことができるといっても基本はテキストエディタなので、こう
いう大量かつ複雑な処理をするのならある程度テキスト処理に特化したソフトの
方が向いているでしょう。
perlやgawkなら無償で手に入るものがたくさんあります。
新たな処理系を勉強する負担は決して小さくないですが、呼出関係表のようなも
のだとgawkの連想配列(perlではハッシュ)を利用することでかなり高速化できる
と思います。

多機能でコンパクトなコードが書けるのはperlですが文法に癖があるので、Cに
似ているgawkの方がとっつきやすいでしょうね。
オブジェクト言語に慣れているならrubyでもいいかも?

[ ]
RE:05733 高速処理No.05735
encodingshiftjis さん 08/01/06 21:16
 
画面表示を想定した処理をするエディターは、プログラム言語より
速くはならない、文字列処理のエンジンとしては

>マクロでいろんなことができるといっても基本はテキストエディタなので、こうい
>う大量かつ複雑な処理をするのならある程度テキスト処理に特化したソフトの方が
>向いているでしょう。

UNIX 系の先人の業績は色々あります、「英文の壁」がありますが
Source Code Analysis で画像検索すると 画が見えます。
また、「プログラムの検索サイト」 で探したらあるのでは。
GNU GLOBAL
とか、大規模では 解析と レポートは別になってる
ツールは C++や Javaでも 設定で C#も解析できるはず
テーマに合致する用語:ブログラムの静的解析ツール および レポート
解析結果を レポートするツール(HTML,PDF、TEX)も 様々。
Windowsにどの程度 移植されてるかは 知りません。

また、リフレクションなど使って コードに動的に注入しているようなのを解析でき
る? かは、知りません。

[ ]
RE:05734 高速処理No.05736
電気なまず さん 08/01/06 22:52
 
>ユーザーのアルビレオです。
>
>個人的には秀丸マクロで処理するにはちょっと荷が重いような気がします。
>たぶん全メソッドの呼出関係表を作るとなると何度も検索を繰り返していると思
>われるので、その部分のI/Oが時間を食っているのでしょうし。
>
>マクロでいろんなことができるといっても基本はテキストエディタなので、こう
>いう大量かつ複雑な処理をするのならある程度テキスト処理に特化したソフトの
>方が向いているでしょう。
>perlやgawkなら無償で手に入るものがたくさんあります。
>新たな処理系を勉強する負担は決して小さくないですが、呼出関係表のようなも
>のだとgawkの連想配列(perlではハッシュ)を利用することでかなり高速化できる
>と思います。
>
>多機能でコンパクトなコードが書けるのはperlですが文法に癖があるので、Cに
>似ているgawkの方がとっつきやすいでしょうね。
>オブジェクト言語に慣れているならrubyでもいいかも?
ありがとうございます。ご指摘の通り何度も繰り返し処理をしています。
秀丸のマクロの正規化に痺れ、無理なことをしていました。
しばらくは時間短縮を諦め、perlかgawkを勉強します。
お手数をかけました。

[ ]
RE:05735 高速処理No.05737
電気なまず さん 08/01/06 22:59
 
>画面表示を想定した処理をするエディターは、プログラム言語より
>速くはならない、文字列処理のエンジンとしては
>
>>マクロでいろんなことができるといっても基本はテキストエディタなので、こう
>いう大量かつ複雑な処理をするのならある程度テキスト処理に特化したソフトの方
>が向いているでしょう。↓
>UNIX 系の先人の業績は色々あります、「英文の壁」がありますが
>Source Code Analysis で画像検索すると 画が見えます。
>また、「プログラムの検索サイト」 で探したらあるのでは。
>GNU GLOBAL
>とか、大規模では 解析と レポートは別になってる
>ツールは C++や Javaでも 設定で C#も解析できるはず
>テーマに合致する用語:ブログラムの静的解析ツール および レポート
>解析結果を レポートするツール(HTML,PDF、TEX)も 様々。
>Windowsにどの程度 移植されてるかは 知りません。
>
>また、リフレクションなど使って コードに動的に注入しているようなのを解析でき
>る? かは、知りません。
encodingshiftjis さん,ありがとうございます。
他に先人のご苦労が色々あるのですね。
当方力不足で、皆様のように世界観もなくご迷惑をかけました。
GNU GLOBALも含み習得しやすいものから検討します。


[ ]
RE:05735 高速処理No.05738
アルビレオ さん 08/01/07 00:33
 
アルビレオです。

>ツールは C++や Javaでも 設定で C#も解析できるはず

これを見て思い出したんですが、C#(というか.NET Framework)にはけっこう強力
な正規表現クラス(System.Text.RegularExpressions)や、ハッシュテーブルを扱
うコレクションクラス(System.Collections.Hashtable)が用意されています。
C#のコードを書けるなら、perlやgawkを使うよりこっちを利用した方がよさそう
ですね。

[ ]
RE:05733 高速処理No.05739
Kamonohasi さん 08/01/07 01:55
 
>  ・拡張子に対する設定を超簡素にするとは
>    C#用拡張子(.cs)を設けて強調表示のない設定をすればよいということでしょうか
ええ、関係ないかもしれませんが、以前のバージョンで強調表示やルーラーの表示や
らが検索の速度に影響してた気がします。(今のバージョンでどうかは分かりませんが)
行番号やらツールバーやら、何やらとにかく全てを取り去って、みてはいかがでしょ
うか。

ただ、お話を聞く限りでは他の方も指摘されていますが、秀丸マクロの限界って線も
捨てきれません。
せめてgrepだけでも別ツールを使って、その結果を使い慣れた秀丸で加工ってのはい
かがでしょうか。
秀丸はエディタが本業ですから、より専門性の高いツールには速度の面では及ばない
はずです。
あとは、マクロの効率化ですかね。
検索、置換でまとめられるモノはないかとか、文字列操作とか。
以前IKKIさんという方の掲示板
http://www18.big.or.jp/~fujiwara/ikki/forum/hidemaru/uptree.cgi?all=1904
で出たのですが、rightstrなどの関数を酷使すると予想外にコストがかかります(今
のバージョンでは調べてないですが)。

となるべく秀丸上で解決する方向での回答を寄せてみました。

[ ]
RE:05738 高速処理No.05741
電気なまず さん 08/01/10 23:15
 
>アルビレオです。
>
>>ツールは C++や Javaでも 設定で C#も解析できるはず
>
>これを見て思い出したんですが、C#(というか.NET Framework)にはけっこう強力
>な正規表現クラス(System.Text.RegularExpressions)や、ハッシュテーブルを扱
>うコレクションクラス(System.Collections.Hashtable)が用意されています。
>C#のコードを書けるなら、perlやgawkを使うよりこっちを利用した方がよさそう
>ですね。
gawkを見始めました。馴染むのに時間がかかりそうです。
でも興味はあります。

[ ]
RE:05739 高速処理No.05742
電気なまず さん 08/01/10 23:21
 
>>  ・拡張子に対する設定を超簡素にするとは
>>    C#用拡張子(.cs)を設けて強調表示のない設定をすればよいということでしょうか
>ええ、関係ないかもしれませんが、以前のバージョンで強調表示やルーラーの表示
>やらが検索の速度に影響してた気がします。(今のバージョンでどうかは分かりませ
>んが)
>行番号やらツールバーやら、何やらとにかく全てを取り去って、みてはいかがでし
>ょうか。
>
>ただ、お話を聞く限りでは他の方も指摘されていますが、秀丸マクロの限界って線
>も捨てきれません。
>せめてgrepだけでも別ツールを使って、その結果を使い慣れた秀丸で加工ってのは
>いかがでしょうか。
>秀丸はエディタが本業ですから、より専門性の高いツールには速度の面では及ばな
>いはずです。
>あとは、マクロの効率化ですかね。
>検索、置換でまとめられるモノはないかとか、文字列操作とか。
>以前IKKIさんという方の掲示板
>http://www18.big.or.jp/~fujiwara/ikki/forum/hidemaru/uptree.cgi?all=1904
>で出たのですが、rightstrなどの関数を酷使すると予想外にコストがかかります(今
>のバージョンでは調べてないですが)。
>
>となるべく秀丸上で解決する方向での回答を寄せてみました。
同じ結果を得るのでも、命令により大きく差があるのを退官しています。
やはりここは経験がいるのでしょう。
当方VBAでセル操作に変わるvariant変数化(メモリ処理らしい)で
劇的なスピードアップを図れたため、味を占めて今回の投稿になった次第です。今回
は即効性を諦め地道に効率を上げる努力もしていきます。
ありがとうございました。

[ ]