对于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();
回答:
最佳做法取决于您的需求:
- 开发速度和可维护性:LINQ
- 性能(根据性能分析工具):手动代码
LINQ确实确实会降低所有间接访问的速度。不必担心,因为99%的代码不会影响最终用户的性能。
我从C ++开始,真正学习了如何优化一段代码。LINQ不适合充分利用CPU。因此,如果您认为LINQ查询有问题,那就放弃它。但是只有这样。
对于您的代码示例,我估计速度会降低3倍。通过lambda进行的分配(以及后续的GC!)和间接操作确实很麻烦。
以上是 对于vs.Linq-性能与未来 的全部内容, 来源链接: utcz.com/qa/399337.html