首页 > 其他 > 详细

性能比较_取数字中的一位

时间:2021-05-22 00:03:40      阅读:27      评论:0      收藏:0      [点我收藏+]

看到别人代码忍不住想喷,又觉得没有数据支持喷得没有力度,于是就测了一下

从一个两位数以上的数字中取出十位的值:

    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多万次。

注:
  • 以上结果在Intel十代i5移动CPU下测得,主频2.5GHz
  • 代码为Unity引擎下C#编写

性能比较_取数字中的一位

原文:https://www.cnblogs.com/playdevil/p/14797539.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!