switch与if效率实例解析·5年以下编程经验必看【C#】

2022-11-29 09:58:04 浏览数 (1)

绝大多数的程序员喜欢使用if判断,但是真的效率高吗?还是其它的,可能只会用if呢!我们今天就具体测一测,用事实说话,测试量100W:

本文采用的是【C#】语言进行测试

switch效率测试代码:

代码语言:javascript复制
using System;
using System.Diagnostics;
namespace Action
{
    class Program
    {
        static void Main(string[] args)
        {

            Random ra = new Random();
            int count = 1000000;
            DateTime start = DateTime.Now;
            for (int i = 0; i < count; i  )
            {
                switch (ra.Next(10))
                {
                    case 0:break;
                    case 1:break;
                    case 2:break;
                    case 3:break;
                    case 4:break;
                    case 5:break;
                    case 6:break;
                    case 7:break;
                    case 8:break;
                    case 9:break;
                    default: break;
                }
            }
            DateTime end = DateTime.Now;
            double usedMemory = Process.GetCurrentProcess().WorkingSet64 / 1024.0 / 1024.0;
            Console.WriteLine("耗时:" (end-start).TotalMilliseconds "毫秒");
            Console.WriteLine("消耗内存:"  usedMemory "M");
        }
    }
}

100W次swtich判断,消耗时间31.66ms,消耗内存16.31M

if效率测试代码:

代码语言:javascript复制
using System;
using System.Diagnostics;
namespace Action
{
    class Program
    {
        static void Main(string[] args)
        {

            Random ra = new Random();
            int count = 1000000;
            DateTime start = DateTime.Now;
            for (int i = 0; i < count; i  )
            {
                int v = ra.Next(10);
                if (v == 0)
                {
                }
                else if (v == 1)
                {
                }
                else if (v == 2)
                {
                }
                else if (v == 3)
                {
                }
                else if (v == 4)
                {
                }
                else if (v == 5)
                {
                }
                else if (v == 6)
                {
                }
                else if (v == 7)
                {
                }
                else if (v == 8)
                {
                }
                else if (v == 9)
                {
                }
            }
            DateTime end = DateTime.Now;
            double usedMemory = Process.GetCurrentProcess().WorkingSet64 / 1024.0 / 1024.0;
            Console.WriteLine("耗时:"   (end - start).TotalMilliseconds   "毫秒");
            Console.WriteLine("消耗内存:"   usedMemory   "M");
        }
    }
}

100W次swtich判断,消耗时间34.68ms,消耗内存16.30M

结论:

综上实验可得:

1、在C#语言中,两者效率相差不大,几乎可以忽略不计,在一百万次判断中只是相差2~3毫秒,效率还是相当惊人的。 2、很明显的是【Java】【Python】【C#】三者测试完成后,觉得Java的效率还是最高的。相信,如果换成用Linux服务器效果会更好。

0 人点赞