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