首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在下面的情况下,linq技术会有多低的效率,并且可以被优化?

在下面的情况下,linq技术会有多低的效率,并且可以被优化?
EN

Stack Overflow用户
提问于 2011-04-24 14:08:14
回答 2查看 84关注 0票数 1

在下面的情况下,linq技术会有多低的效率,并且可以被优化?

Linq技术

代码语言:javascript
复制
public String FindProviderName(Int32? TrueName)
{
    String providerName = (from p in this.Providers
                           where p.TrueName == TrueName
                           select p.ProviderName).First().ToString();

    return providerName;
}

步行技术

代码语言:javascript
复制
public String FindProviderName(Int32? TrueName)
{
    String providerName = String.Empty;

    foreach (IProvider provider in this.Providers)
    {
        if (provider.TrueName == TrueName)
        {
            providerName = provider.ProviderName;
            break;
        }
    }

    return providerName;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-24 14:21:19

如果那是,他们都会很快。如果您想加快速度,请考虑使用Dictionary<int,string>并使用TryGetValue(...)。显然,您需要预生成字典,也许可以通过ToDictionary()。

注意,当没有匹配时,所显示的两个示例是不同的;一个抛出;一个返回空字符串。此外,不需要对字符串调用ToString()。

更快的版本(注释);您需要一个字段,

代码语言:javascript
复制
Dictionary<int,string> lookup;

在使用之前(或数据更改后)的某个时候,您需要填充它:

代码语言:javascript
复制
lookup = providers.Where(p => p.RealName != null)
    .ToDictionary(p => p.RealName.Value,
        p => p.ProviderName);

那么你的查找就会像:

代码语言:javascript
复制
string providerName;
if(realName == null ||
    !lookup.TryGetValue(realName.Value, out providerName))
    return null;
return providerName;
票数 2
EN

Stack Overflow用户

发布于 2011-04-24 14:25:03

你有代码,如果你想知道它有多高效,就测量它。

当然,人们通常会担心代码的效率,而不是这样的。可读性不是更重要吗?这就是让你慢下来的代码吗?

话虽如此,firs代码可以稍微快一些,如下所示:

代码语言:javascript
复制
public String FindProviderName(Int32? TrueName)
{
    String providerName = this.Providers
                              .First(p => p.TrueName == TrueName)
                              .Select p.ProviderName);

    return providerName;
}

通过使用for而不是foreach (如果您的集合类型是List<T>或数组),第二种方法可能会更快。

不过,这两种优化都不会产生任何可衡量的效果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5770972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档