我的问题是基于
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; } }
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-optimizing或premature-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或循环如何执行,问题在于磁盘读取次数.