哪个更快执行或更优化?C#

yon*_*236 1 c# linq

我不确定这里是否可以提出这类问题,但我只是想知道两个代码片段之间的区别.

当我在SO中浏览这里的问题时,我发现这篇文章: 如何在c#中找到名称以某个字符串开头的HTML元素的数量?

用户回答了这个问题:

var dictionary = Request.Form.Keys
     .Cast<string>()
     .Where(x => x.StartsWith("abc"))
     .ToDictionary(x => x, x => Request.Form[x]);
Run Code Online (Sandbox Code Playgroud)

返回一个字典,其中包含以"abc"开头的所有表单元素的键/值.

更新:可怜的OP正在使用.Net 2.0.所以这是老派的回答:

Dictionary<string, string> keys = new Dictionary<string, string>();
foreach (string key in request.Form.Keys)
{
    if (key.StartsWith("abc"))
         keys[key] = request.Form[key];
}
Run Code Online (Sandbox Code Playgroud)

哪两个更快执行或更优化?我们应该永远不会使用旧的吗?

Jay*_*Jay 6

这是"过度优化"的一个很好的例子.代码不在内部循环中执行,如果您对其进行分析,您将看到它远低于应用程序执行时间的0.1%.

因此,在这种情况下,易读性,可靠性和可维护性是更大的问题.鉴于这两个片段都能可靠地完成这项工作,从那时起你忘记了这段代码是如何运作的,你想要阅读哪一段?