使用 StringBuilder 生成 HTML 服务器端时空格是否重要?

Does whitespace matter when using StringBuilder to generate HTML server side?

我想知道在使用 StringBuilder 生成 HTML.

时,使用空格来表示缩进(为了可读性)是否会对性能产生负面影响

以这个简化的例子为例:

 str.AppendLine("<div>")
 str.AppendLine("    <span>Test</span>")
 str.AppendLine("</div>")

相对于:

 str.AppendLine("<div>")
 str.AppendLine("<span>Test</span>")
 str.AppendLine("</div>")

我正在寻找尽可能详细的解释,说明为什么或为什么不是这种情况

答案是:视情况而定。与非空白对应项相比,如果您使用大量空白执行大量操作, 对性能产生影响。这是一个基准测试:

Dim t1 = Task.Run(New Func(Of TimeSpan)(
                          Function()
                              Dim start = Now
                              Dim sb As New System.Text.StringBuilder

                              For i = 1 To 5000000
                                  sb.AppendLine("                                   My Value")
                              Next

                              sb.ToString()
                              Return Now - start
                          End Function))

Dim t2 = Task.Run(New Func(Of TimeSpan)(
                          Function()
                              Dim start = Now
                              Dim sb As New System.Text.StringBuilder

                              For i = 1 To 5000000
                                  sb.AppendLine("My Value")
                              Next

                              sb.ToString()
                              Return Now - start
                          End Function))

Debug.Print(String.Format("With Whitespace (ms): " & t1.Result.Milliseconds))
Debug.Print(String.Format("Without Whitespace (ms): " & t2.Result.Milliseconds))

这是一个极端的例子,每行与非空白相比有很多额外的空白,它构建了五百万行。在此示例中,输出为:

With Whitespace (ms): 757

Without Whitespace (ms): 371

但是,如果将构建的行数减少一半并将每行的额外空白量减少一半,则输出变为:

With Whitespace (ms): 223

Without Whitespace (ms): 175

然后再次将行数和空格数减少一半(即现在是原来的四分之一):

With Whitespace (ms): 87

Without Whitespace (ms): 66

所以重点是,它确实会产生影响,但这取决于你如何使用它,最后,它只是相差几百 毫秒 在极端情况下。最终,由您(和您的同事)决定在每种情况下什么是重要的:程序员的可读性或用户的响应能力。