Unityに負荷をかける
Unityで負荷かけたいと言われちょっと調べたけど見当たらなかったので試しに作ってみた。
Unityは非同期処理のコルーチンとかあるけど、Unityはシングルスレッドなのでコルーチンももろにアプリに影響が出るので、別スレッドで処理させるようにもしてみた。
1回の計算数と作成するスレッド数は試す環境によって変わってくるので徐々に増やして見たほうが良い。
コルーチンver
コルーチンで動作させた時。プロファイラーを見るとScriptでめっちゃがんばってるのがよく分かる。
タスクマネージャー上だとよく分からない。
別スレッドver
別スレッドで動かした時。プロファイラー上ではよく分からない。Unityとは別のスレッドで動いてるはずなのでプロファイラー上で負荷が上がってないのは期待値通り。
タスクマネージャー上ではいくつかのCPUで一気に使用率が上がった。上手い事別スレッド(別CPU)で処理が分散されて負荷がかかった。同時に作成するスレッド数を増やしていけばCPU不足状態を再現できそう。
ちなみに平常時(Unity起動状態)はこんな感じだった。
AddStress.cs
適当なゲームオブジェクトにアタッチするだけ。
負荷になるような重い処理がよく分からなかったのでとりあえずMathクラスを使って計算させてみた。
重い処理と言われてるRaycastをたくさん飛ばしたりもしてみたけどRaycastだとメモリも上がってしまうのでやめておいた。
CustomAddStress.cs
Inspector拡張なのでEditorフォルダ配下に入れる。