c# - 为什么这个循环这么慢?

标签 c# performance loops

我试图找出这个循环如此缓慢的原因,但我还没有得到一个好的答案。以下循环需要一分钟多的时间来执行:

        string answer = "";
        string headers = "";
        string datarows = "";
        bool firstRun = true;
        foreach (Dictionary<string, string> row in JSON)
        {
            datarows += "<tr>";
            foreach (KeyValuePair<String, String> cell in row)
            {
                if (firstRun) { headers += "<th>" + cell.Key + "</th>"; }
                datarows += "<td>" + cell.Value + "</td>";
            }
            datarows += "</tr>";
            firstRun = false;
        }
        answer += "<table><tr>" + headers + "</tr>" + datarows + "</table>";
        return answer;

JSON 变量是一个列表,包含大约 1150 个词典。每个字典包含 9 个键值对。有什么想法吗?

最佳答案

出现的明显问题是您的字符串连接。

每次附加到一个字符串时,实际上是附加到该字符串的一个副本(因为每个字符串都是不可变的)。这可能会非常昂贵。

您应该更喜欢 StringBuilder ,或者,为了生成这样的 HTML,您可能需要调查 HtmlTextWriter - 这将有助于处理 HTML 的“格式良好”等问题。

关于c# - 为什么这个循环这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9774242/

相关文章:

c# - 在 Windows 8 C# 上解压 ZIP 文件

java - 我的 JBoss 服务器在 Linux 上达到 100% SYS CPU;什么会导致这个?

php - 如何将 if/else if 转换为循环

c++ - 如何在 while 循环中使用 cin?

php - 通过对象属性运行循环并赋值

c# - 远程调试不会因错误而中断

c# - fb.Get() 不存在?

c# - 如何在字符串中输入双引号

performance - MIPS(好奇心)清除寄存器的更快方法?

python - Numba 中的乘法函数比 CPython 慢