zoukankan      html  css  js  c++  java
  • 对判断值在数组中的索引3种方法的性能测试,附源码【原创】

         /// <summary>
            /// 使用for循环判断
            /// </summary>
            /// <param name="str"></param>
            /// <param name="Num"></param>
            /// <returns></returns>
            private static int MetFor(string[] str, string Num)
            {
                for (int i = 0; i < str.Length; i++)
                {
                    if (str[i] == Num)
                    {
                        return i;
                    }
                }
                return -1;
            }


            /// <summary>
            /// 使用递归循环方法判断
            /// </summary>
            /// <param name="str"></param>
            /// <param name="Num"></param>
            /// <returns></returns>
            private static int MetRecursion(string[] str, string Num, int i)
            {
                if (i > str.Length)
                {
                    return -1;
                }
                if (str[i] == Num)
                {
                    return i;
                }

                i++;
                return MetRecursion(str, Num, i);


            }

            /// <summary>
            /// 使用Linq查询
            /// </summary>
            /// <param name="str"></param>
            /// <param name="Num"></param>
            /// <returns></returns>
            private static int MetNinq(string[] str, string Num)
            {


                ///使用Linq查询,将索引和值查出来,
                ///新建一个匿名类,属性包括 aa bool类型,和 Index 索引
                var tt = str.Select((num, index) => new
                {
                    aa = (Num == num),
                    Index = index

                });
                //将得到的输出结果进行判断,查找 aa为true的索引值
                //最后成功得到它的索引
                int number = tt.Where(n => n.aa == true).Last().Index;
                return number;
            }

    ---------------------------------------------------------------------------------性能测试结果对数组存在 110000条数据进行测试
    在同一台配置的计算机上: 

    使用for循环判断速度最快!
      耗时约:16毫秒

    使用 Linq查询,速度一般!
      耗时约: 25毫秒

    使用 递归判断!(OFF,>>>直接服务停止>>>>)


    原文来自:http://hi.baidu.com/xiaowei0705/blog/item/d952f033de6e820febc4af82.html
    经验在于积累----小伟
  • 相关阅读:
    vue 跨域访问http
    vue 生命周期小结
    koa的教程
    spoj104 HIGH
    loj2026 「JLOI / SHOI2016」成绩比较
    loj2024「JLOI / SHOI2016」侦查守卫
    loj2016 「SCOI2016」美味
    loj2014 「SCOI2016」萌萌哒
    loj2013 「SCOI2016」幸运数字
    loj2012 「SCOI2016」背单词
  • 原文地址:https://www.cnblogs.com/xiaowei0705/p/2015016.html
Copyright © 2011-2022 走看看