Unity Vector3的几种创建方法开销比较
本次研究 new Vector3(), new Vector3(0,0,0) 与 Vector3.zero 三者的开销比较
代码如下
//一
var vec = new Vector3();
long time1 = GetTimeStamp();
for (int i = 0; i < 10000000; i++)
{
vec = new Vector3();
}
long time2 = GetTimeStamp();
Debug.Log(time2 - time1);
vec.x = 0;
//二
var vec = new Vector3();
long time1 = GetTimeStamp();
for (int i = 0; i < 10000000; i++)
{
vec = new Vector3(0,0,0);
}
long time2 = GetTimeStamp();
Debug.Log(time2 - time1);
vec.x = 0;
//三
var vec = new Vector3();
long time1 = GetTimeStamp();
for (int i = 0; i < 10000000; i++)
{
vec = Vector3.zero;
}
long time2 = GetTimeStamp();
Debug.Log(time2 - time1);
vec.x = 0;
每个通过10次执行打印得出:
计算平均数得到的结果是:
32.2、90.6、90.0
综上所述消耗的时间对比为 new Vector3() < Vector3.zero < new Vector3(0,0,0).
但是有人说 Vector3.zero 并不比 new Vector3(0,0,0) 快,参考这位仁兄的见解https://www.jianshu.com/p/776e8998d7c6?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
那其实按照测试的结果来看,相差并不是很多,可以忽略不记。
但是 new Vector3() 是相差挺大的,猜想是因为省掉了参数,所以节省了开销。如果以后为了得到一个(0,0,0)的向量,那可以使用new Vector3()