我有这个代码:
var options = GetOptions(From, Value, SelectedValue);
var stopWatch = System.Diagnostics.Stopwatch.StartNew();
foreach (Option option in options)
{
stringBuilder.Append("<option");
stringBuilder.Append(" value=\"");
stringBuilder.Append(option.Value);
stringBuilder.Append("\"");
if (option.Selected)
stringBuilder.Append(" selected=\"selected\"");
stringBuilder.Append('>');
stringBuilder.Append(option.Text);
stringBuilder.Append("</option>");
}
HttpContext.Current.Response.Write("<b>" + stopWatch.Elapsed.ToString() + "</b><br>");
它正在写:
第一次尝试中的 00:00:00.0004255(不在调试中)
第二次尝试中的
00:00:00.0004260 和第三次尝试中的 00:00:00.0004281。
现在,如果我更改代码,那么该度量将位于foreach 循环内:
var options = GetOptions(From, Value, SelectedValue);
foreach (Option option in options)
{
var stopWatch = System.Diagnostics.Stopwatch.StartNew();
stringBuilder.Append("<option");
stringBuilder.Append(" value=\"");
stringBuilder.Append(option.Value);
stringBuilder.Append("\"");
if (option.Selected)
stringBuilder.Append(" selected=\"selected\"");
stringBuilder.Append('>');
stringBuilder.Append(option.Text);
stringBuilder.Append("</option>");
HttpContext.Current.Response.Write("<b>" + stopWatch.Elapsed.ToString() + "</b><br>");
}
...我
在第一次尝试中得到 [00:00:00.0000014, 00:00:00.0000011] = 00:00:00.0000025(不在调试中),
[00:00:00.0000016, 00:00:00.0000011] = 00:第二次尝试为 00:00.0000027,第三次尝试为
[00:00:00.0000013, 00:00:00.0000011] = 00:00:00.0000024。
?!
根据第一个结果完全没有意义......我听说foreach
循环很慢,但没想到它这么慢......是这样吗?
options
有2个选项。这是option
课程,如果需要的话:
public class Option
{
public Option(string text, string value, bool selected)
{
Text = text;
Value = value;
Selected = selected;
}
public string Text
{
get;
set;
}
public string Value
{
get;
set;
}
public bool Selected
{
get;
set;
}
}
谢谢。