gpt4 book ai didi

c# - 字符串长度的 linq 函数 OrderByDescending 和 OrderBy 在内部如何工作?它比用循环做更快吗?

转载 作者:太空狗 更新时间:2023-10-29 20:43:22 25 4
gpt4 key购买 nike

我的问题是根据this question提出的,我已经发布了关于那个问题的答案.. here

这是代码。

var lines = System.IO.File.ReadLines(@"C:\test.txt");
var Minimum = lines[0];//Default length set
var Maximum = "";

foreach (string line in lines)
{
if (Maximum.Length < line.Length)
{
Maximum = line;
}

if (Minimum.Length > line.Length)
{
Minimum = line;
}
}

以及使用 LINQ 替代此代码(我的方法)

var lines = System.IO.File.ReadLines(@"C:\test.txt");
var Maximum = lines.OrderByDescending(a => a.Length).First().ToString();
var Minimum = lines.OrderBy(a => a.Length).First().ToString();

LINQ 易于阅读和实现..

我想知道哪个对性能有好处Linq 如何在内部为 OrderByDescending 和 OrderBy 按长度排序

最佳答案

您可以 read the source code for OrderBy .

停止做 micro-optimizingpremature-optimization在你的代码上。尝试编写正确执行的代码,然后如果您稍后遇到性能问题,则分析您的应用程序并查看问题出在哪里。如果您有一段代码由于寻找最短和最长的字符串而出现性能问题,那么请开始优化这部分。

We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3% - Donald Knuth

File.ReadLines正在返回 IEnumerable<string> ,这意味着如果你对它做一个foreach,它会一个一个地返回数据给你。我认为您在这里可以做的最好的性能改进是改进从磁盘读取文件。如果它足够小,可以将整个文件加载到内存中,请使用 File.ReadAllLines ,如果不是,请尝试以适合内存的大块读取文件。逐行读取文件会因磁盘 I/O 操作而导致性能下降。所以这里的问题不是 LINQ 或循环如何执行,而是磁盘读取次数的问题。

关于c# - 字符串长度的 linq 函数 OrderByDescending 和 OrderBy 在内部如何工作?它比用循环做更快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31043496/

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