マクロのキャッシュについてNo.11237
western さん 23/04/20 09:00
 
ベータの registercallback / keyhook 絡みもあるのでこちらで


ヘルプの execmacro文 の説明に

> setcompatiblemode 0x04000000;
> でキャッシュファイルは使わずメモリ上のキャッシュを使う方法もあります。

とありますが、この機能を有効にしたい場合に
パラメータ1の拡張子を ".mac.cache" しておく必要がありますか?



setcompatiblemode文 の 0x04000000 の説明に

> execmacroのコンパイル内容をメモリ上にキャッシュして再利用します。
> マクロの実行が終わるとメモリは破棄されます。

キャッシュの有効期間が、宣言した(jsmodeでない?)マクロ終了までと読めますが、
あるマクロの中から execmacro で連続して呼ばれる時専用であって
キー割り当てなどで、頻繁に呼ばれる新規マクロ実行として呼ばれる用途で使う
という想定ではない機能でしょうか?
(自動起動マクロの設定には .mac.cache を使うオプションはありますが)


多くのファイルを順次引数に入れて複雑なマクロ処理を処理したい、
などのバッチ処理が意図した用途でしょうか


マクロ起動完了までにかかるコスト・ラグ(Disk I/O発生するので)の最小化には神経
質にならずに
キャッシュ関連は各ユーザが使っている各環境で体感(&トラブル有無)で決める
くらいが想定された使い方であれば、そういうものと考えます
もともと充分に早いので支障はなさそうですが……


registercallback のヘルプ説明ですが
レンダリング枠から呼ばれる前提の内容になっていますが
今回追加された keyhook でも使われるようになったので、
再確認時に言い回しとレンダリング枠ページにいたのが、
一瞬あれ?となりました


registercallback は(経緯から) keyhook か レンダリング枠 などの特定マクロ&ウ
ィンドウ限定なるので
メモリキャッシュが強制で効くような状況であれば、少し心に優しいです (早速こだ
わってる)


キーの状態を分岐に使う都合 (特殊モードOFF時は全てclearkeyhookする運用なら軽
減可能ですが)
で、ヘルプにある iskeydown のキーコード調べる用サンプルを
jsmode に移植して [0x1..0x91] のループでテストしたら 600ms (4ms * 145 + 6 な
ので想定通り)
かかって、従来マクロ(こちらは0.24ms)でやらないと、と起動コストが気になった次
第です

既にキー割り当て/keyhook、移動後、編集後、とマクロ3段階フローありますが、
重い処理避けてコンパクトに調整すれば、現状で違和感に気付くような状況はゼロな
ので、
休むに似たり な状況でもありますが・・・・・・

素のマクロちょっ早なの素晴らしいです

[ ]
RE:11237 マクロのキャッシュについてNo.11243
秀丸担当 さん 23/04/20 15:50
 
setcompatiblemode 0x04000000;のキャッシュというのは、自動起動マクロのそれと
は違って、マクロからexecmacroでマクロを呼び出すときのものになります。
一番最初の根本のマクロの実行には適用されないです。
他の場面でも使えたり、残して再利用とかできたらいいかもしれません。

registercallbackのヘルプ位置は確かに変です。
ブラウザ枠やレンダリング枠のマクロヘルプはいずれ整理します。

hidemaruGlobalのめぼしいものの1つとして、iskeydownも内部的にネイティブ寄り
にしてみようかと思います。

[ ]