Page 1 of 1

負荷が跳ね上がる時がある

Posted: 2020/01/21 02:12
by kkk
Arbor FSM利用時、DataBranchの負荷が跳ね上がるときがあったので添付のようにキャッシュしてみました。
問題なければ対応してもらえると助かります。
AI処理にSubStateMachineを多用しているため、その時じゃないかと思っています。

何かに影響ある可能性もあるので、優先度は低いです。

Re: 負荷が跳ね上がる時がある

Posted: 2020/01/21 04:06
by caitsithware
ご要望ありがとうございます。

Code: Select all

private DataBranch InputBranch
{
    get {
        if (_branch == null) {
            NodeGraph nodeGraph = outBehaviour as NodeGraph;
            if (nodeGraph != null) {
                DataBranchRerouteNode rerouteNode = nodeGraph.dataBranchRerouteNodes.GetFromID(outNodeID);
                if (rerouteNode != null) {
                    _branch = rerouteNode.link.GetInputBranch();
                }
            }
        }
        return _branch;
    }
}
private DataBranch _branch;

void Calculate()
{
	Calculator calculator = outBehaviour as Calculator;
	if (calculator != null)
	{
		calculator.Calculate();
	}
	else
	{
		var b = InputBranch;
		if (b != null)
			b.Calculate();
	}
}

public void SetDirtySlotField()
{
	_InputSlotField = null;
	_OutputSlotField = null;
	_branch = null;
}
のInputBranch、_branchの部分ですね。
実行中は基本的に接続状況が変わることもないため、ご提案された方法でキャッシュしても問題なさそうです。
影響範囲なども詳しく検証した上で反映しようと思います。

※添付していただいたファイルにつきましては、上記の通り変更点のみ抜粋いたしましたので削除しておきます。

Re: 負荷が跳ね上がる時がある

Posted: 2020/08/05 00:56
by kkk
対応ありがとうございました。
こちらもスロットを多用すると負荷の原因になっているのでキャッシュしています。
問題なければ対応して頂くと助かります。

よろしくおねがいします。

Re: 負荷が跳ね上がる時がある

Posted: 2020/08/05 01:07
by caitsithware
ご提案ありがとうございます。
検討いたします。

※添付ファイルはダウンロードが済みましたので削除いたしました。