うにてぃブログ

UnityやUnreal Engineの記事を書いていきます

Profiler

【Unity】Enum の int キャストについて調べてみた

enum を int にキャストするときには (int)enum と enum.GetHashCode() の2つがある(はず) しかしながらどちらが早いのか、int をそのまま扱うのと比べてどれくらい遅いのかを調べたことがなかったので調べてみる Unity Editor 上 で .NET 4.x にして Prof…

【Unity】transform.position にアクセスした際の GC を見る

Unity では 以下のような拡張メソッドを利用して Transform の位置を変更することがあるが これを何度か呼んだ場合 GC がどうなってるかを調べる public static class TransformExtension { public static void SetPositionY(this Transform self, float val…

【C#】List の初期サイズを指定した場合と指定しなかった場合

new List<T>(1) のように List のインスタンス生成時に 要素数を指定すると 予め 領域を確保することができるため突然のGC を防ぐことができる 初期化のタイミングだと空の場合は 40B 指定した場合は 76 + サイズ * 4B (int の場合) 指定したサイズに満たない場</t>…

【C#】ToArray の GC を見る

Primitive型 int 型のからリストを ToArray してみてGCを見てみる var list = new List<int>(); // 32B list.ToArray(); 次に 1要素だけ入れて見てみる var list = new List<int>(){0}; // 36B list.ToArray(); 36B になった int 型が 4B なのでおそらく要素分だけゴミ</int></int>…

【Unity】GameObject の Hierarchy 上での移動コスト

何度も計測しているわけではないのと階層の違いで速度は違うと思います parent に直接値を入れる以外は何度も利用するわけじゃなければ 使っても問題なさそう Transform.parent Transform.SetParent Transform.SetSiblingIndex Transform.SetAsFirstSibling …

【Unity】Material にパラメータをセットする際の速度計測

Material に パラメータをセットする際には Material.SetColor や Material.SetVector などを利用する この際に第一引数には string と int を指定することができる string の場合でも 結局 int に変換されるのですが、この変換処理が遅いらしいので調べてみ…

【Unity】特定のコードの Profiling を行う

コードをプロファイリングするために Profiler.BeginSample Profiler.EndSample が用意されている Unity - Scripting API: Profiling.Profiler.BeginSample コードのプロファイリングするには以下のように記述すればいけますが private void Awake() { Profi…