質問編集履歴

1

コードを一部修正しました。

2022/06/21 05:17

投稿

nativeFaith
nativeFaith

スコア3

test CHANGED
@@ -1 +1 @@
1
- Unity GetComponent負荷検証方法に関
1
+ GetComponentによる負荷検証したい
test CHANGED
@@ -3,8 +3,6 @@
3
3
 
4
4
  以下の様なコードで検証を行いました。
5
5
  ```C#
6
- private void FixedUpdate()
7
- {
8
6
  var shot = _shotPool.GetPoolObj(0);
9
7
 
10
8
  for (int g = 0; g < 10000; g++)
@@ -12,12 +10,11 @@
12
10
  var a = shot.GetComponent<hogehoge>();
13
11
  var b = shot.GetComponent<CircleCollider2D>();
14
12
  }
15
- }
16
13
  ```
17
14
  ※GetPoolObj関数で任意のオブジェクトを取得しています。
18
15
  ※shotオブジェクトにはhogehoge.csとCircleCollider2Dをアタッチ済みです。
19
16
 
20
- 上記のスクリプトを実行すれば1フレームにGetComponentが2万回実行されることになり、フレームレートが著しく低下するだろうと期待しました。
17
+ 上記のスクリプトを実行すれば1フレームにGetComponentが2万回実行されることになり、一時的にフレームレートが著しく低下するだろうと期待しました。
21
18
  しかしFPSは全く落ちません。更に6万回ほどに増やしても落ちません。
22
19
 
23
20
  これは流石にGetComponentが軽いのではなく、私の検証方法が間違っているのだろうと思いました。