看到别人代码忍不住想喷,又觉得没有数据支持喷得没有力度,于是就测了一下
    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