对于vs.Linq-性能与未来

非常简短的问题。我有一个随机排序的大型字符串数组(100K个条目),在这里我想找到所需字符串的第一次出现。我有两个解决方案。

从阅读中我可以猜到,“

for循环”当前将提供更好的性能(但是此余量可以随时更改),但是我也发现linq版本更具可读性。总而言之,通常认为哪种方法是当前最佳编码实践,为什么?

string matchString = "dsf897sdf78";

int matchIndex = -1;

for(int i=0; i<array.length; i++)

{

if(array[i]==matchString)

{

matchIndex = i;

break;

}

}

要么

int matchIndex = array.Select((r, i) => new { value = r, index = i })

.Where(t => t.value == matchString)

.Select(s => s.index).First();

回答:

最佳做法取决于您的需求:

  1. 开发速度和可维护性:LINQ
  2. 性能(根据性能分析工具):手动代码

LINQ确实确实会降低所有间接访问的速度。不必担心,因为99%的代码不会影响最终用户的性能。

我从C ++开始,真正学习了如何优化一段代码。LINQ不适合充分利用CPU。因此,如果您认为LINQ查询有问题,那就放弃它。但是只有这样。

对于您的代码示例,我估计速度会降低3倍。通过lambda进行的分配(以及后续的GC!)和间接操作确实很麻烦。

以上是 对于vs.Linq-性能与未来 的全部内容, 来源链接: utcz.com/qa/399337.html

回到顶部