是否有比TextWriter / StringBuilder更有效的文本后台处理程序

时间:2020-03-05 18:58:16  来源:igfitidea点击:

对于诸如增量捕获文本的情况,例如,如果我们正在渲染页面时接收到所有的output.write调用,并且这些调用已通过stringbuilder追加到文本编写器中。

有没有更有效的方法可以做到这一点?最好已经在dotnet中存在?特别是如果总大小超过十万。也许更像是页面数组而不是连续的内存?

解决方案

回答

我认为StringBuilder是在.net中添加文本的最有效方法。为了提高效率,我们可以在创建StringBuilder时指定其初始大小。

回答

那样就好了。我们可以使用StringWriter,但仍在写入StringBuilder

回答

这取决于我们对文本的处理方式。

如果我们关注的是跟踪或者日志记录,那么我们最好的选择是使用ETW(Windows事件跟踪)。这是Windows 2000以来内置在Windows中的内核级跟踪工具,它比执行文件I / O快得多。

如果不使用.NET 2.0,则必须做一些win32 API工作才能使用它,并且必须创建一个在系统上注册的提供程序类。这有点复杂,但值得付出努力。

如果使用的是.NET 3.5,则可以在System.Diagnostics.Eventing中找到托管的Etw类。