ストップウォッチでプログラムの処理のスピードを計る
プログラムをガリガリ書いて動かしてみるとなんだか処理が重たい…でもどこを直せば早くなるのかわからないという事ありませんか?
先日記事にしたTranslateとtransform.positionで動かしたときにどちらが早く処理できるかという事を書いたのですが、若干の差が何千回、何万回ループをする事によって大きな差になってしまいます。
そこで、どのプログラムを書き換えると処理がどうなったかわかるようにストップウォッチみたいなものを使ってどれだけの時間がかかっているかを計測してみましょう。
//[時間を計測]
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
ストップウォッチとわかりやすいようにswという名前にしました。System.Diagnostics.Stopwatch
StopwatchクラスはSystem群の中のDiagnostics群の中にStopwatchクラスがあると考えて下さい。
一番最初に using System.Diagnostics; を書いておけば
Stopwatchだけで使用できます。
しかし、using System.Diagnostics;を最初に書いてしまうとusing UnityEngine;の中にもDebugが所属しており、System.DiagnosticsのDebugとUnityEngineのDebugがぶつかってしまうのでDebugを使うとエラーが出てしまいます。
なので長いのですが、System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();と記載しましょう。
sw.Start ();
Start()はそのままストップウォッチのカウントがスタートします。
sw.Stop ();
ストップももちろんストップします。
Debug.Log(sw.Elapsed);
計測したストップウォッチを確認する場合はElapsedです。Debug.Logでコンソールに表示させるようにして実際に確認してみましょう。
これを使うと処理がどれだけの時間をかけて処理されているか計測する事が可能です。重たくなるんだよなあ…という人は一度試しに自分のプログラムの何が重たいのかを計測してみてはどうでしょうか(´・ω・`)!