在Unity3D中获取某个方法的执行时间


3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
using UnityEngine ;
using System . Collections ;
using System . Diagnostics ;
 
public class NewBehaviourScript : MonoBehaviour {
 
void Start ( )
{
float t Time . time ;
TestMethod ( ) ;
UnityEngine . Debug . Log ( string . Format ( "total: {0} ms" , Time . time - t ) ) ;

Stopwatch sw = new Stopwatch ( ) ;
sw . Start ( ) ;
TestMethod ( ) ;
sw . Stop ( ) ;

UnityEngine . Debug . Log ( string . Format ( "total: {0} ms" , sw . ElapsedMilliseconds ) ) ;
 
 
Profiler . BeginSample ( "TestMethod" ) ;
TestMethod ( ) ;
Profiler . EndSample ( ) ;
}
 
 
void TestMethod ( )
{
for ( int i = 0 ; i < 10000000 ; i ++ )
{
}
}
 
}


所示,Stopwatch就可以正确的取到上一个方法所消耗的时间。

如果想同时测试多个方法,可以多次调用 sw.Reset(); 然后sw.StopElapsedMilliseconds毫秒数即可。

还有一种思路是使用Time.time来保存时间然后做计算,但是在同一帧内得到的永远都会是零,所以使用以上的方法来获取执行时间~

你可能感兴趣的:(Unity3D)