是否有比TextWriter / StringBuilder更高效的文本假脱机程序

时间:2008-09-17 08:18:31

标签: c# .net performance string data-structures

对于像增量捕获文本这样的情况,例如,如果在呈现页面时接收到所有output.write调用,并且这些调用将通过字符串构建器附加到文本编写器中。

有更有效的方法吗? dotnet中存在的东西已经优先了吗?特别是如果总大小超过一百k。也许更像是一组页面而不是连续的内存?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

这取决于你对该文本的处理方式。

如果问题是跟踪或记录,我会说你最好的选择是使用ETW(Windows事件跟踪)。它是一个内核级跟踪工具,自Windows 2000以来一直内置在Windows中,它比文件I / O快得多。

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

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

答案 2 :(得分:1)

这就像它得到的一样好。您可以使用StringWriter,但它仍然写入StringBuilder