gpt4 book ai didi

c# - 哪个快 : Query Syntax vs. 循环

转载 作者:太空狗 更新时间:2023-10-30 00:06:14 26 4
gpt4 key购买 nike

以下代码提供了两种生成和小于 100 的整数对的方法,并根据它们与 (0,0) 的距离降序排列。

    //approach 1
private static IEnumerable<Tuple<int,int>> ProduceIndices3()
{
var storage = new List<Tuple<int, int>>();
for (int x = 0; x < 100; x++)
{
for (int y = 0; y < 100; y++)
{
if (x + y < 100)
storage.Add(Tuple.Create(x, y));
}
}
storage.Sort((p1,p2) =>
(p2.Item1 * p2.Item1 +
p2.Item2 * p2.Item2).CompareTo(
p1.Item1 * p1.Item1 +
p1.Item2 * p1.Item2));
return storage;
}

//approach 2
private static IEnumerable<Tuple<int, int>> QueryIndices3()
{
return from x in Enumerable.Range(0, 100)
from y in Enumerable.Range(0, 100)
where x + y < 100
orderby (x * x + y * y) descending
select Tuple.Create(x, y);
}

这段代码摘自Bill Wagner的书Effective C#,第8项。在整篇文章中,作者更关注代码的语法、紧凑性和可读性,但是很少关注性能,几乎不讨论。

所以我基本上想知道,哪种方法更快?什么通常在性能上更好(通常):查询语法或手动循环?

请详细讨论,如果有引用资料请提供。 :-)

最佳答案

分析是事实,但我的直觉是循环可能更快。重要的是,100 次中有 99 次性能差异在事物的宏伟计划中并不重要。使用更具可读性的版本,当您以后需要维护它时,您 future 的自己会感谢您。

关于c# - 哪个快 : Query Syntax vs. 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4751527/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com