您的位置:首页 > 其它

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

2011-04-15 16:47 399 查看
/// <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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: