对于像增量捕获文本这样的情况,例如,如果您在呈现页面时接收所有 output.write 调用,并且这些调用通过字符串构建器附加到文本编写器中。
有没有更有效的方法来做到这一点?dotnet 中已经存在的东西最好?特别是如果总大小超过一百千。也许更像是页面数组而不是连续内存?
对于像增量捕获文本这样的情况,例如,如果您在呈现页面时接收所有 output.write 调用,并且这些调用通过字符串构建器附加到文本编写器中。
有没有更有效的方法来做到这一点?dotnet 中已经存在的东西最好?特别是如果总大小超过一百千。也许更像是页面数组而不是连续内存?
我认为 StringBuilder 是在 .net 中附加文本的最有效方式。为了提高效率,您可以在创建 StringBuilder 时指定它的初始大小。
这取决于您对该文本的处理方式。
如果关注的是跟踪或日志记录,我会说您最好的选择是使用 ETW(Windows 事件跟踪)。它是自 Windows 2000 以来内置于 Windows 中的内核级跟踪工具,它比文件 I/O 快得多。
如果您不使用 .NET 2.0,则必须做一些 win32 API 工作才能使用它,并且必须创建一个在系统上注册的提供程序类。这有点复杂,但值得努力。
如果您使用的是 .NET 3.5,则可以在 System.Diagnostics.Eventing 中找到托管的 Etw 类。
这是最好的。您可以使用 StringWriter 但它仍在写入 StringBuilder