C#方法第一次运行比第一次运行慢

时间:2018-07-19 07:26:41

标签: c# unity3d

我编写了这段代码

using UnityEngine;

public class InstanceTest : MonoBehaviour { 
public int cnt; public bool startTest1 = false; public bool startTest2 = false;

 void Update()
 {
     if (startTest1)
         Test1(cnt);
     if (startTest2)
         Test2(cnt);
 }
 void Test1(int cnt)
 {
     float a;
     for (int i = 0; i < cnt; i++)        
         a = 1f + 1f;        
 }
 static void Test2(int cnt)
 {
     float a;
     for (int i = 0; i < cnt; i++)        
         a = 1f + 1f;        
 }
}

在Profiler上

enter image description here

为什么第一次调用Test1()和Test2()时Update()上的CPU时间会打ic?

1 个答案:

答案 0 :(得分:1)

在第一次调用函数期间可能会发生一些JIT(Just In Time)编译。

第二次及之后的函数调用,它们的优化版本正在等待。