新しいこと、枯れたこと問わずサムザップ大庭が興味を持ったものを調査、生活の効率を求める完全趣味の技術ブログ。基礎を大事にしています。最適化ふと気になったシリーズです。Unityを使っていると、ありがたいことに様々な便利関数がラップ、または拡張追加提供されています。拡張しているUnityEngine.MathfというものがUnityでは提供されています。その中でUnityEngine.Mathf.Abs関数は引数の絶対値を求めてくれますが、中身を覗くと以下のコードで記述されています。内部的にはSystem.Math.Abs関数を実行しているだけです。Unityでコードを書く場合、UnityEngine.Mathf.AbsとSystem.Math.Absどちらを使えばよいの?っていう話になると思いますが、これはケースによって異なると思います。上記のコードを使い、Unityプロファイラで負荷を確認すると、1回の実行では目立った差は出てきませんが、10000回実行すると顕著に出てきます。結果は明らかですが、UnityEngine.Mathf.AbsはSystem.Math.Absに比べて約2倍の負荷がかかっているということになります。これは、UnityEngine.Mathf.AbsがMathf.AbsとMath.Absの2つの関数をまたいでいるためだと思われます。いうことで、パフォーマンスチューニングするときの手段としてはMathクラスをそのまま使うというのは1つの手かもしれません。マルチプラットフォーム対応観点Unityはワンソースで複数のプラットフォームに対応するように作られているため、UnityEngine.Mathfクラスに限りませんが、UnityEngine配下のクラスを使ったほうが安全だと思われます。逆のパターンもありえますチーム開発観点チーム内でコードレビューをすると思いますが、その際にMathfとMathどっち使うの?みたいな議論が出て、このケースだと使っていいけど、このケースはやめようというコードレビューの複雑化が予想されます。大きな問題が発生していないのであればMathfクラスを使ったほうが、シンプルで良いと思います。まとめパフォーマンスに余裕がある場合は素直にUnityEngine.Mathfを使ったほうが良いという自分の中での結論。03:37UnityEngine.MathfとSystem.Mathどっちを使うのが良い?という話Tweet読者になるボタンを押して貰えるととてもがんばれます。大庭俊介(bao_bao)渋谷のUnityエンジニア。スマホゲーム作って生活しています。設計、組み込み、演出一通りを自分1人で完結して作るのが得意です。よろしければTwitterフォローお願いします。(@ohbashunsuke)株式会社サムザップでUnityエンジニアとしてスマホゲーム作っています。(1)スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。