一括表示

− 野ざらし言 −

[3116] TVIEWを使ってみた

としき 2009/02/17(Tue) 21:55
http://www.hinocatv.ne.jp/~toshiki/
今日、なにげに、YASATさんの tview.def をポケ3で使ってみました。
バージョンは v0.13 というやつ。
何もカスタマイズしないでそのまま使ってみたのですが、うまく動かない。
縦書き画面が出てくる前の段階でハングしてしまいます。
^C も [ESC] も、当然 [SPC] も [RET] も効きません。
昔、PC-98 で使った時はそんな事なかったんだけどなぁ。
でも、ざっとコードを追いかけてみましたが、機種依存していそうな部分は
ありません。何が悪いんだろう。

・・・と、しばらく(数分!)放置していたら、縦書き画面が出てきました。
単に動作速度が極端に遅かっただけのようです。
どこが悪いのかと &t を使って追いかけてみたところ、ローカル20番の中の、
内側のループといっていいのかな、ラベル :B に飛んでくるところで著しく
時間を食っていることまでは判明しました。が、その中のどこの部分が悪い
のかまでは特定できませんでした。

ここでいくつか質問です。
マクロに詳しい方の目から見て、その部分で極端に時間がかかりそうなルー
チンというのは存在しているものでしょうか。
あるいは、ある特定の条件で遅くなる可能性というのはありますでしょうか。
例えば、ポケ3は縦が短いですが、行数が少なければ少ないほど時間がかか
るとか、変換前のテキストの横桁数と表示時の縦行数がある特定の関係にな
る場合に遅くなる可能性がある、といったことです。または、対象のテキス
トがある特定の条件を満たすと遅くなってしまうとか、疑似縦文字との変換
でこの条件が重なるとマズイとか。
もしかしてテキストが長すぎるとマズイかと思い、たった3行、50バイト
に満たないようなテキストで試しに実行してみましたが、やっぱりちょっと
とてつもなく遅かったです。まさか、テキストが短ければ短いほど遅い、と
いうことはないですよね。
う〜ん、何もカスタマイズしていない、というのが問題なのかなぁ。
あ、そうだ、200LX 等の遅めのマシンをお持ちの方がいらっしゃいましたら、
試しに、適当なテキストで走らせてみていただけませんか?
もし現実的な時間(数十秒以内)で表示が出てくるようであれば、ポケ3版
特有の事象かもしれません。ポケ3版では特定の関数かコマンドとが異常に
遅い、という事があるかもしれませんので。

なにとぞよろしくお願いします。
 

[3117] Re: TVIEWを使ってみた

めざら 2009/02/18(Wed) 06:03
[3116]へのコメント http://homepage3.nifty.com/mezala/index.html
 v0.13というのは,やや版が古いようですし,現在入手可能ではないので,次のURIからライブラリ版(2003/03/22,no.727)をダウンロードして実行してみてください。
http://homepage3.nifty.com/mezala/vz/history/maclib1.html#tview10

 この版だと,無改造HP200LXの18行表示,フォントファイルはRAM上にあり,…という環境で1ページ当たり15〜20秒程度で表示されます。別のファイル上に整形表示するマクロとしては特別遅いという速度ではないと思います。

 オアシスポケットで遅い,の原因を調べるには,いくつかの代表的な処理をループさせて計測する方法が考えられますが,それはv1.0を試用してみてからということでいかがでしょう。

[3118] Re^2: TVIEWを使ってみた

としき 2009/02/19(Thu) 09:00
[3117]へのコメント http://www.hinocatv.ne.jp/~toshiki/
> 次のURIからライブラリ版(2003/03/22,no.727)をダウンロードして実行してみてください。

とりあえず、ダウンロードだけしてみました。
後ほどじっくりと試してみたいと思います。

>  オアシスポケットで遅い,の原因を調べるには,いくつかの代表的な処理をループさせて計測する方法が考えられますが,それはv1.0を試用してみてからということでいかがでしょう。

そういえば、昔、検索文字列の連続取得マクロの遅さに耐えきれず、一部を
マシン語ルーチンにした、というのを思い出してしまいました。
さらに、なんかのゲームマクロもやっぱり異様に遅かったような。
母艦でもほとんど使わないマクロだという事もあって、ポケ3では遊ぶこと
そのものをあきらめた記憶があります。

[3120] Re^3: TVIEWを使ってみた

としき 2009/02/21(Sat) 00:04
[3118]へのコメント http://www.hinocatv.ne.jp/~toshiki/
> 後ほどじっくりと試してみたいと思います。

試してみました。
当初、予測としては、EMSの使用が悪さをしているのではないかと考えて
いました。が、結果としてはこれは大ハズレ。EMSの有無は体感にはほと
んど現れてきませんでした。
色々と条件を変えてみた結果、ポケ3ではこのマクロはそもそも遅いという
ことが判明。それが、さらにとてつもなく遅くなる要因としては、省電力の
ための常駐ソフトであるPDCが最大の原因であるとわかりました。

テストに使ったのは、たった3行、57バイトのテキストファイルです。
以下のようなものです。

> B:\>WC A
>       3       6      57 a
> 
> B:\>

ポケ3は、通常モードというか、縦12行モードです。
Vzはポケ3版konnoパッチを使用。
以下、全て条件は同じです。
これで、縦画面描画が終わってマクロが入力待ちになるまでの所要時間は、
おおむね以下のようなものでした。

 PDCなしで40秒
 PDCを常駐させると、なんと7分10秒

どこが遅いのか、&s をコメントアウトして、画面表示をじっくりと観察して
みました。結果、マクロの挙動というか画面表示更新の挙動としては、以下
を繰り返しているような感じでした。

 元ファイルを一瞬表示
 縦書き画面(.TVW ファイル)に一文字表示
 一旦停止

PDCを使うと、全体に動作が遅くなるような感じでしたが、特に一旦停止
の部分で、体感でわかるほど待ち時間が長くなっています。実際にはマクロ
が停止しているわけではなく、裏で文字置換などが動いているんでしょうが、
ほんと、もっさりもっさり、という感じでした。
具体的には、ローカル20番の、ラベル :B に戻ってくるループ部分が該当
の個所だと思います。

> そういえば、昔、検索文字列の連続取得マクロの遅さに耐えきれず、一部を
> マシン語ルーチンにした、というのを思い出してしまいました。

これは、GGW でしたね。
ここの過去ログの #228 からのツリーで検討しています。
両方で使われているコマンドまたは関数が主犯格、ということなのかな。

> さらに、なんかのゲームマクロもやっぱり異様に遅かったような。
> 母艦でもほとんど使わないマクロだという事もあって、ポケ3では遊ぶこと
> そのものをあきらめた記憶があります。

母艦でも使っていないものなので、どのゲームか判然としませんが、なんと
なく、7並べかオセロのマクロのような気がしてきました。
 

[3150] Re^4: TVIEWを使ってみた

YASAT 2009/03/21(Sat) 22:47
[3120]へのコメント
レス遅くなりました。

TVIEW遅いですよ。
愚直に編集テキストを切り替えながら一文字ずつ展開してますからね。
対象となるテキストをいくらかバッファに取り込んだりすれば少しは速くなるのかな
という気がしないでもないですが……
読むだけだったら別のマシンで桁数行数指定して一気に展開しておいて、目的のマシンに持ってく方法もあります。

[3152] Re^5: TVIEWを使ってみた

としき 2009/03/23(Mon) 09:50
[3150]へのコメント http://www.hinocatv.ne.jp/~toshiki/
> TVIEW遅いですよ。
> 愚直に編集テキストを切り替えながら一文字ずつ展開してますからね。

ロジック的に、一番遅いアルゴリズムを使っている、というのは理解してい
ます。問題は、このマクロで使われているマクロコマンドかシステム関数の
うち、ポケ3では他の機種に比べて著しく遅いものがある、というところな
んです。

> 読むだけだったら別のマシンで桁数行数指定して一気に展開しておいて、目的のマシンに持ってく方法もあります。

ありがとうございます。
残念ながら、縦の短いポケ3でこのマクロを常用するつもりはありません。
今回は、ポケ3でマクロ遊び、というテーマでいろんなマクロをつまみ食い
していて気がついた、というところの話でした。

[3163] Re: 遅いマクロ

としき 2009/04/04(Sat) 23:35
[3116]へのコメント http://www.hinocatv.ne.jp/~toshiki/
その他にもポケ3では著しく遅いマクロを見つけてしまいました。
LXCLND.DEFです。
LXCLND20.LZH 収録の (v1.00) というやつです。日付は 99-12-28。

最初の、カレンダーが表示されるまでがとっても待たされます。
具体的にどの部分が遅いかまでは追いかけていません。
なんか、マシン語とかテーブルとか色々使っているので、見た瞬間にあきら
めました。
あと、遅いことのほかに、どうもポケ3ではキーコードが異なっているらし
く、カーソル移動関係などがうまく動いてくれません。まぁ、こちらはなん
とかできそうですけどね。
 

[3164] Re^2: 遅いマクロ

めざら 2009/04/05(Sun) 06:46
[3163]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
ふうむ、また出てしまいましたか。

Emmett さんの HP200LX 向けマクロは、LX の速度を考慮して大量のメモリ間転送などは徹底的に機械語化して高速化を図っているんですよね。ですから、TVIEW のように地道なテキスト間コピーと違って速度差が出にくいと思っていたのですけれどね。

また、メニュー表示時の操作キー(実際にはメニューをキャンセルして閉じるキーの返り値)は、キーコードを見ているわけではなくて、キーに割り当てられたコマンド番号やマクロ番号を返します。したがってオアシスポケットでのキー割当を初期設定から変更していないか確認が必要かもしれません。まぁ、他のコマンドを割り当てれば済むことなのですけれど。

[3168] Re^3: 遅いマクロ

としき 2009/04/05(Sun) 23:22
[3164]へのコメント http://www.hinocatv.ne.jp/~toshiki/
本格的に使うつもりはないので、あまり追いかけてはいないのですが。
ただ、起動キーを押してから最初の表示が出るまで、が遅いわけですから、
被疑範囲は結構広いです。なので、追いかけることをあきらめました。

あと、キー操作については、キーコードによらない、というのは思ってもみ
ませんでした。今回は特にいじるつもりはありませんが、今後、同じように
うまく動かないマクロに出会った場合の対応にとても参考になります。

ありがとうございました。
 

[3166] Re^2: 遅いマクロ

konno 2009/04/05(Sun) 22:18
[3163]へのコメント
としきさん

> LXCLND20.LZH 収録の (v1.00) というやつです。日付は 99-12-28。

えーと、これって、軟体の「LXCLND.DEF 1.0 高速カレンダー 」ですか。
でも、日付が1999/03/18ですね。ということは、その下の、
「LXCLND.DEF 2.0 LXカレンダー 1999/12/28 」版でしょうか。こちらは
リンクが無いので試せませんねぇ。

と思ったけど、文太さんのCDにありましたね。多謝!!

> 最初の、カレンダーが表示されるまでがとっても待たされます。

このマクロの冒頭に、&t を追加して、スペースで追っかけて待たされる
箇所を特定できないでしょうか。たぶんスペースを押しっぱなしにして
いれば、ふっと動きが止まる部分があるのではないかと思うのですが。

これが気になったのは、てっきりEMS関係が遅いのだと思っていたから
なんですが、このマクロは多分使って無いですよね。なので、それ以外の
特定の関数が遅いようなのがとても気になったもので。
場合によってはソースを見てみたいなと。(^^;

[3169] Re^3: 遅いマクロ

としき 2009/04/05(Sun) 23:35
[3166]へのコメント http://www.hinocatv.ne.jp/~toshiki/
> このマクロの冒頭に、&t を追加して、スペースで追っかけて待たされる
> 箇所を特定できないでしょうか。たぶんスペースを押しっぱなしにして
> いれば、ふっと動きが止まる部分があるのではないかと思うのですが。

この程度であれば、時間はたっぷりかかるかもしれませんが、手間はあまり
かからないと思いますので、そのうち実験してみましょう。今週は木曜日か
土曜日頃にまとまった時間が取れると思いますので、その時に試してみます。

> これが気になったのは、てっきりEMS関係が遅いのだと思っていたから
> なんですが、このマクロは多分使って無いですよね。なので、それ以外の
> 特定の関数が遅いようなのがとても気になったもので。

その他のマクロの場合ですが、このツリーで検討しているTVIEWの遅い部分は
ほぼ絞りこめています。あと、#228 からのツリーでも遅いルーチンを提示し
ていますので、ざっと見ていただけるとありがたいです。
 

[3193] Re^4: 遅いマクロ

konno 2009/04/13(Mon) 01:50
[3169]へのコメント
としきさん、返事が遅くなりました。m(__)m

> その他のマクロの場合ですが、このツリーで検討しているTVIEWの遅い部分は
> ほぼ絞りこめています。あと、#228 からのツリーでも遅いルーチンを提示し
> ていますので、ざっと見ていただけるとありがたいです。

うう、これってポケ3用アイドルVZのきっかけになった記事でしたね。
すっかり失念していました。
ポケ3はメモリアクセスが遅いのかなという印象ですが、今回のは節電機能が
働いていたのではないかという気がしました。

メモリアクセスといえば、以前、EMSが遅いので、EMSDATAをメモリカードから
メインメモリに移してみたことがありますが、格段にスピードが上がりました。
つまり、メインメモリに比べてSRAMカードメモリは遅いということで、EMSDATA
や一時ファイルをSRAMカードに置いていると、そこで遅くなるとは思います。

一度SRAMカードのベンチマークとかしてみてはどうでしょうか。

[3194] Re^5: 遅いマクロ

としき 2009/04/13(Mon) 11:16
[3193]へのコメント http://www.hinocatv.ne.jp/~toshiki/
> ポケ3はメモリアクセスが遅いのかなという印象ですが、今回のは節電機能が
> 働いていたのではないかという気がしました。

そうですね。それに間違いないでしょう。
節電機能を使うことによって遅くなるのは今までも色々なソフトで経験して
いましたが、まさかVzでこれほど差が出るとは思っていなかったので、ち
ょっとびっくりしています。

> 一度SRAMカードのベンチマークとかしてみてはどうでしょうか。

そのうちに試してみましょう。
カードは何枚も持っていますから、それぞれの速度を計って、製造メーカー
や容量毎の傾向が見えてくれば面白いかもしれません。
ただ、内蔵RAMの速度の測定にあたってはちょっと問題があって。
覚えている範囲では、私の手持ちのディスクベンチマークソフトはいずれも
500KB 程度のデータを読み書きして測定するものばかりなんです。ところが、
本体内蔵RAMは総容量がわずか 150KB 程度しかないので、それらのソフト
は使えません。なので、ベンチマークソフトを探すところから始めなくては。
あとは、確か EMSUTY にEMS の速度を測定するオプションがついていたよう
な気がします。これを使って、内蔵RAMに設定した EMS の速度を測定する
ことは可能かもしれませんが、たかだか8ページしか EMS を確保できないの
ですから、常用するのは難しいです。
 
 

[3171] Re^2: 遅くないLXCLND.DEF

としき 2009/04/09(Thu) 22:30
[3163]へのコメント http://www.hinocatv.ne.jp/~toshiki/
> LXCLND.DEFです。
> LXCLND20.LZH 収録の (v1.00) というやつです。日付は 99-12-28。

今日、再度実行してみたのですが、全然遅くありません。
何回試しても、素早く、パっとカレンダーが表示されます。
前回は、色々なマクロを試している時だったので、メモリのどこかにゴミが
たまっていたとか、バッファのどこかが破壊されていたという事があったの
かもしれません。

前回、試したときも気が付いていたのですが、このマクロ、ポケ3では色の
指定があまり芳しくありません。エスケープシーケンスの実装状況が不十分
だからでしょう。どうなるかというと、標準のモノクロモードの指定の場合、
休日のところで色が反転するといった感じで、デフォルトの3ヶ月表示では
左の月と右の月はほとんどの日が反転表示で、真ん中の月はほとんどの日が
非反転表示、といった感じ。試行錯誤して、aa="$$!",bb="$$8",cc="$$!",
という設定が一番良さそうだというところまで追い込みましたが、それでも
完璧とは言えません。
ポケ3の場合、色指定にかかわるエスケープシーケンスは、反転色指定と、
色指定解除の2種類しかありません。多分、これではどうしようもないので
しょう。色指定なしにすればそこそこ実用的に使えるような気はします。

今日は、この色指定の部分をいろいろといじっていました。
逆に、その部分しか触っていないのは保証します。
そんな中で、妙な状況が発生しました。
マクロが途中で停まってしまったのです。
停まってしまったときは、何かエラーが発生したのでしょう、左下にマクロ
コードが表示されて止まりました。ポケ3版は高橋版以前と同じで、エラー
停止の場合、左下のファンクションキーまでのほんの数文字しかマクロコー
ドが表示されないのですが、この時は、「!01」と表示されていました。この
コードはマクロ内に1ヵ所しか含まれていないので、場所はすぐに特定でき
ます。ただ、なぜそんなところで停まったかがわからない。
この、停まった時のマクロファイルを保存しておけばよかったのですけど、
消してしまったのが残念です。ただ、その同一のファイルで、複数回、^K^で
読み込みなおしても同じ状況だった、というのは手がかりになるかもしれま
せん。誤って、色指定の部分の二重引用符かカンマを消してしまったのかと、
あとから再現実験を行ったのですが一向に再現しません。もしかしてこれも、
いろいろといじっている間にどこかのメモリ領域が壊れたことにより発症し
たのかな、なんて妄想しています。
 

↑ このページの先頭