SSブログ

waitresall関数呼び出しリソース対応,etc(v3.0.31.0) [資産管理電卓(LineCalc)]

資産管理電卓 v3.0.31.0 で以下の修正を行いました。

・パースエラー修正
・& が連続した場合の文字列結合高速化
・waitresall で関数呼び出しで作成されたリソースの対応
・&= 配列対応
・関数配列返し高速化
・デバッグダイアログでのストリングバッファリソース内容表示対応
・&=,+=,-=.*=,/= コンテキストリソース非対応修正
・関数配列返し時の不具合修正
・配列削除高速化
・参照のある関数を削除すると参照先がクリアされる不具合修正
・&=の帰り値の不具合修正
・ライブラリ更新

・パースエラー修正
 配列アクセス、関数呼び出しのパースエラーを修正しました。

・& が連続した場合の文字列結合高速化
 & が連続した場合の速度を高速化しました。
 長い文字列の場合に高速化されます。

・waitresall で関数呼び出しで作成されたリソースの対応
 waitresall は関数内で作成されたリソースが対象で関数を呼び出して呼び出し先で作成されたリソースは対象外でしたがリソース種別の前に "FNC (スペース)" とつけることで関数呼び出しで作成されたリソースも対象にするようにしました。

{
 fnc(tes,prc("delay(2000)")),
 for(cnt,1, 10, 1, tes),
 waitresall("fnc")
}

上記では関数 tes 内で作成されたプロセスリソースの終了を待ちます。
"fnc" だけ指定すると種別は全て(コンテキスト、ストリングバッファリソース除く)になります。

{
 fnc(tes,prc("delay(2000)")),
 for(cnt,1, 10, 1, tes),
 waitresall("fnc prc")
}

上記ではプロセスリソースを明示しています。

・&= 配列対応
&= 演算子で配列に対応しました。
{
 tmp = [1, 2],
 tmp &= [3] // tmp は [1,2,3]
}


上記は
{
 tmp = [1, 2],
 appenddim([3],tmp)
}

上記と同等で配列結合は文字列変換されることなく高速です。

・関数配列返し高速化
関数から巨大な配列を返した場合今までは一旦文字列に変換していましたが、文字列変換をなくし内部コピーするようにしました。
 若干の高速化とともに使用メモリが減少しています。
 コピーされるのは変わりなく速度は低速なので巨大な配列を関数呼び出し間で受け渡す場合はコンテキストリソース、無名関数を使用すると高速になります。
 配列はあくまで通常変数の集まりですので巨大配列(10000を超えるような)配列を扱う場合メモリや速度の調整が必要になる場合があります。
 ファイルに保存する、コンテキストリソース上に作成するなどの対応が必要になってきます。

・&=,+=,-=.*=,/= コンテキストリソース非対応修正
上記演算子で左項にコンテキストリソースの変数を指定した場合正常に動作しない不具合を修正しました。

・デバッグダイアログでのストリングバッファリソース内容表示対応
 デバッグダイアログでバインドされたストリングバッファリソースの内容を表示するように対応しました。内容が長い場合は省略されますが、変数部分(文字列部分ではないです)の行をダブルクリックすると全文字列が表示されます。

・関数配列返し時の不具合修正
 配列を返した場合にコンテキストリソースが含まれていた場合稀にアクセス不能になる不具合を修正しました。

・配列削除高速化
配列の消去を高速化しました。

・参照のある関数を削除すると参照先がクリアされる不具合修正
無名関数を引数として渡し、その引数の関数を del で削除すると呼び出し元の全変数が削除される不具合を修正しました。

・&=の帰り値の不具合修正
 &= 演算子で帰り値が返されない場合があり返すようにしました。
 左項がストリングバッファの場合、帰り値は計算後の文字列ではなく左項の変数の内容(ストリングバッファリソースのID値)となります。

コメント(0) 
共通テーマ:パソコン・インターネット

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。