パラメータをCalculatorで参照するとき、Calculator.OnGetParameter()やCalculator.UnwatchParameters()で毎回GC Allocが発生する場合がある

Forum rules
The items necessary for reporting are as follows.
  • OS(Required)
  • Unity version(Required)
  • Arbor version(Required)
  • How to reproduce(Required)
    The reproduction method should be described accurately so that anyone can read the same procedure.
    If you do not know the exact reproduction procedure, as long as you can remember it, so please tell us what you were doing immediately before and the last time you edited it.
  • Build platform
  • Reproduction project (Minimum configuration not including Arbor and other assets) or video

Note:
  • Please read the "Update Guide" carefully when updating Arbor.
  • The bugs that we already know are summarized in "Known Issues", so please check once.
  • Please check ReleaseNote and use the latest version if possible before reporting a bug.
  • Unity beta and alpha versions are not supported. Please use the official release version.
  • In principle, defects caused by the introduction of other assets are not supported. If you find a defect, please report it after isolating which asset is the problem.

報告に必要な項目は以下の通りです。
  • OS(必須)
  • Unityバージョン(必須)
  • Arborバージョン(必須)
  • 再現方法(必須)
    再現方法については、誰が読んでも同様の手順を行えるよう正確に記述するようにお願いいたします。
    もし正確な再現手順が不明な場合、覚えている限りで構いませんので直前に行っていたことや最後に編集した時のことを教えてください。
  • ビルドプラットフォーム
  • 再現プロジェクト(Arborや他アセットなどを含まない最小構成)もしくは動画

注意点:
  • Arborを更新する際は「アップデートガイド」をよく読み行ってください。
  • 既に把握している不具合は「既知の問題」にまとめてありますので一度確認してみてください。
  • 不具合報告をする前にReleaseNoteを確認し、なるべく最新バージョンを使用して下さい。
  • Unityのベータ版およびアルファ版はサポート対象外です。正式リリース版をご利用ください。
  • 他アセット導入による不具合は原則サポート対象外です。不具合を見つけた場合はどのアセットの問題であるか切り分けた上でのご報告をお願いいたします。

Post a reply

Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :| :mrgreen: :geek: :ugeek:

BBCode is ON
[img] is ON
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: パラメータをCalculatorで参照するとき、Calculator.OnGetParameter()やCalculator.UnwatchParameters()で毎回GC Allocが発生する場合がある

Re: パラメータをCalculatorで参照するとき、Calculator.OnGetParameter()やCalculator.UnwatchParameters()で毎回GC Allocが発生する場合がある

by ooee » 2023/10/28 07:24

暫定対処方法を手持ちのプロジェクトに適用したところ、GC Allocは発生しなくなりました。
確認ありがとうございます。

Re: パラメータをCalculatorで参照するとき、Calculator.OnGetParameter()やCalculator.UnwatchParameters()で毎回GC Allocが発生する場合がある

by caitsithware » 2023/10/28 06:37

ご報告ありがとうございます。
Calculatorが演算されるたびに参照しているパラメータの変更監視の解除と登録が行われることで発生しているようですね。
あまり良いとは言えないので対応いたします。

暫定対処方法
  1. Assets/Plugins/Arbor/Internal/Scripts/Calculator.csを開く
  2. 324行目のUnwatchParameters()呼び出しを削除
[影響範囲]
プレイ中に参照しているパラメータを変更した場合、変更前に参照していたパラメータの値変更が行われたときに再演算が発生します。

パラメータをCalculatorで参照するとき、Calculator.OnGetParameter()やCalculator.UnwatchParameters()で毎回GC Allocが発生する場合がある

by ooee » 2023/10/28 04:08

いつもお世話になっています。

不具合かどうかはわかりませんが、以前のバージョンでは発生しなかった現象を確認したので、ご報告いたします。

OS: Windows11
Unityバージョン: 2021.3.31f1
Arborバージョン: 3.9.11

再現方法:
1.ステートマシンにintパラメータを追加
2.以下を毎フレーム実行
Ind.Add(Value1:intパラメータ、Value2:0)→Ind.Add(Value1:intパラメータ、Value2:左Int.AddのResult)→SetParameter(Intパラメータに代入)
3.プロファイラで確認すると、
Calculator.OnGetParameter()
Parameter.add_onChanged()
Delegate.Combine()
MulticastDelegate.CombineImpl() GC Alloc 176B
が発生していることを確認。

また再現できなかったのですが、手持ちのプロジェクトでは以下も同時に発生していました。
Calculator.UnwatchParameters()
Parameter.remove_onCHanged()
Delegate.Remove()
MulticastDelegate.RemoveImpl() GC Alloc 184B

Top