-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
配列のサイズ、次元数が大きい程、個々の配列関連処理に時間が掛かる。 #187
Comments
BMTestCaseP.txt
ところで、今日、初めて「UWSCRの配列について」(2023年12月05日付け)という記事を見付けたのですが、UWSCに比べて、利便性向上の面で大分尽力されたのですね。私の使い方では、配列リテラルのようにダイナミックに配列をいじるような事はないのですが、他の変数に代入出来る事等は便利さを感じています。 |
配列の処理に関しては実装が明らかに悪く、それがパフォーマンスに影響しているものと推測されます
配列のパフォーマンスに問題を感じた方はおそらくこのissueにたどり着くでしょうから、ここで参照できる形になっていれば十分だと思います 僕自身がバグissueを上げる際は現象の回避手段や代替コードがあればそれも併記するようにしています |
成る程、Issueの利用方法として、そんな事も考えられますね。私も、今後も出来るだけ回避策も含めたレポートを心掛けて行きます。
本件修正のプライオリティーを上げる計画、有難いです。
…On Tue, Jul 9, 2024 at 11:43 PM Joey Takahashi ***@***.***> wrote:
@DIYJii <https://github.com/DIYJii>
配列の処理に関しては実装が明らかに悪く、それがパフォーマンスに影響しているものと推測されます
改善予定自体は以前からあったものの改善方法については検討中であり、まあ時間があるときにやりましょう…ということで後回しになっていました
とはいえ本件で問題が表面化したこともあり配列の実装改善タスクの優先度を上げることにしました
これはバージョン1.1.0を目標とします
回避方法としてTSVファイルのパフォーマンスを紹介しておくのも良いのではないでしょうか?
配列のパフォーマンスに問題を感じた方はおそらくこのissueにたどり着くでしょうから、ここで参照できる形になっていれば十分だと思います
僕自身がバグissueを上げる際は現象の回避手段や代替コードがあればそれも併記するようにしています
Issue自体もドキュメンテーションとして機能しますから、それを参照することでトラブルシューティング的に利用できると後から同じ問題に直面した方にとっては便利になりますよね
—
Reply to this email directly, view it on GitHub
<#187 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BH6AXYS4SIY7NWL536RTVU3ZLPZJNAVCNFSM6AAAAABKMUHSF6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEMJXHEYTSMRRGI>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
概要
例えば、単純に配列に数字を書き込むだけの処理でも、配列が大きく成れば成る程、1回当たりの処理時間が増える。
1次元配列より、2次元配列の方が配列サイズ増加に伴う回数当たり処理時間の増加の程度は激しく、幾何級数的に増加する。
(注:配列が大きければ、其れ全体を処理するのに時間が掛かるのは当然だが、ここでは個々の式の処理に時間が掛る様になるという事を意味している。)
配列から要素をGetする場合もほぼ同じ結果なので、配列へのアクセスに時間が掛っているように見える。
ちなみに、UWSCでは回数当たり処理時間は、1次元配列より2次元配列の方で多少の増加は有るが、配列のサイズには関係なくほぼ処理時間は一定している。
本件は、UWSCで1秒以内に終わっていたワンクリック・オペがUWSCRに移行後 5~6秒掛かる様に成った事に端を発しています。色々調べた結果200~300回 ForでLoopするコードの中に180*6サイズの2次元配列を毎回10回位ずつアクセスしている事が主たる原因であることが判明しました。
という事で、改善策を模索する意味でも必要となる為、思い切ってベンチマーク用のスクリプトを書きました。
当方の古くて遅いPCで走らせたベンチマークの結果も含めて、そのプログラム、及びマニュアル等々を送りますので、詳細については、そちらを参照下さい。
なお、一時的な解決策として、CSV又はTSVファイルを配列代わりに使えば、UWSCにほぼ匹敵するパフォーマンスが得られる事が判り、それ関連の関数も作りましたので送ります。疑似配列の宣言、SetClear,Get,Put,Addの機能を含みます。
BenchMark.txt
BMTestOrg.txt
BMTestCase.txt
BMResultO.txt
BMTestCaseP.txt
BMResultP.txt
ベンチマーク・マニュアル.txt
Functions.txt
再現スクリプト
再現手順
上記ファイルをUWSCR.exe, UWSC.exeと同じPathに置き、BenchMark.uwsの2行目にある
PUBLIC Path = "C:\Users\Public\Documents"
を、必要に応じて該当Pathに合わせて書き換えた後、BenchMark.uwsをUWSC上で起動すると、 そちらのPCでBMTestCase.txtを使って実際に計測したレポートが 作成されます。
又、BMTestCaseP.txtを、BMTestCase.txtとReNameするか、又はBMTestCaseP.txtを開いて全体をクリップボードにコピーした後にBenchMark.uwsを起動すると、疑似配列のテスト結果が出ます。
BMTestCase.txtを自分で書いてテストする事も出来ますので、マニュアルを一読 下さい。
バージョン
1.0.1
不具合発生環境
Windows 10
The text was updated successfully, but these errors were encountered: