看到别人代码忍不住想喷,又觉得没有数据支持喷得没有力度,于是就测了一下
void Start()
{
float[] nums = new float[10000000];
for(int i=0;i<10000000;++i)
{
nums[i]= UnityEngine.Random.Range(10, 300);
}
int startTime = Environment.TickCount;
foreach(float speed in nums)
{
string str = speed.ToString("0");
float n= float.Parse(str.Substring(str.Length - 2, 1));
}
print(Environment.TickCount - startTime);
startTime = Environment.TickCount;
foreach (float speed in nums)
{
int n = (int)speed % 10;
n = n / 10;
}
print(Environment.TickCount - startTime);
}
输出:
23250
47
第二种方法体中加上代码string str = speed.ToString("0");
后输出约16000
可以看到,性能相差约500倍
设游戏以60帧运行,一帧时间是16ms,使用第一种算法在一帧中可以执行7168次,而第二种算法一帧中可以执行300多万次。
原文:https://www.cnblogs.com/playdevil/p/14797539.html