【发布时间】:2011-04-24 14:08:14
【问题描述】:
在以下情况下,linq 技术的效率会降低多少,可以优化吗?
Linq 技术:
public String FindProviderName(Int32? TrueName)
{
String providerName = (from p in this.Providers
where p.TrueName == TrueName
select p.ProviderName).First().ToString();
return providerName;
}
步行技巧:
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;
}
【问题讨论】:
-
如果
ProviderName是string,则无需调用ToString()。 -
没错,但编译器会知道这一点,而不必费心在 IL 中运行它?
-
@Carnotaurus 它会运行它,但它只是一个“返回这个”的调用,非常快
-
哦,我以为编译器会很聪明,不会编译出这么多余的语句。所以,我会给他一个赞成票。
-
@Carnotaurus - 编译器还希望程序员足够聪明,不会添加多余的语句:) 实际上它消除了一些而不是全部的愚蠢。
标签: .net linq performance optimization