对判断值在数组中的索引3种方法的性能测试,附源码【原创】

    技术2022-05-20  40

            /// <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


    最新回复(0)