delphi - 我何时以及为什么应该使用 TStringBuilder?

标签 delphi unicode delphi-2009 stringbuilder

一年前,我将程序从 Delphi 4 转换为 Delphi 2009,主要是为了跳转到 Unicode,同时也是为了获得这些年来 Delphi 改进的好处。

当然,我的代码都是遗留代码。它使用的短字符串现在已经方便地全部变成长 Unicode 字符串,并且我已将所有旧的 ANSI 函数更改为新的等效函数。

但是在 Delphi 2009 中,他们引入了 TStringBuilder 类,该类可能是在 .NET 的 StringBuilder 类之后建模的。

我的程序执行大量字符串处理和操作,并且可以一次将数百兆字节的大字符串加载到内存中进行处理。

我不太了解Delphi对TStringBuilder的实现,但我听说它的一些操作比使用默认的字符串操作要快。

我的问题是我是否值得付出努力并将我的标准字符串转换为使用 TStringBuilder 类。这样做我会得到什么或失去什么?

<小时/>

感谢您的回答并引导我得出我的结论,除非需要 .NET 兼容性,否则不要打扰。

在他的博客上Delphi 2009 String Performance, Jolyon Smith states :

But it looks to me as if TStringBuilder is there primarily as a .NET compatibility fixture, rather than to provide any real benefit to developers of Win32 applications, with the possible exception of developers wishing or needing to single-source a Win32/.NET codebase where string handling performance isn’t a concern.

最佳答案

据我所知,TStringBuilder 的引入只是为了与 .NET 和 Java 保持一致,它似乎更像是一个勾选框类型的功能,而不是任何重大进步。

似乎一致认为 TStringBuilder 在某些操作中更快,但在其他操作中更慢。

你的程序听起来像是一个有趣的程序,可以用来比较 TStringBuilder 之前/之后的情况,但除了作为一项学术练习之外,我不会这样做。

关于delphi - 我何时以及为什么应该使用 TStringBuilder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1585760/

相关文章:

c - 以不同用户身份打开进程

delphi - 通过 RDC/ActiveX Crystal Reports XI 进行独立报告预览

python - 可以在 Python 扩展对象中使用宽字符成员吗?

delphi - 项目控件将其自身从容器控件中删除

delphi - 使用 Indy 发布并且文件名包含希腊字符时文件上传失败

python - 如何创建管理系统可以排序的 __unicode__ 字段?

c++ - 无法让法语字符在 C++ 中工作

delphi - 在 Delphi 编辑器中更改 TCollectionItem 的标签

delphi - 当我在 TBitmap 中加载新图像时,我必须先销毁现有图像吗?

Delphi 2009 + Unicode + 字符大小