Delphi 10.4 Runtime Library运行时类库升级增强功能

Delphi Runtime Library是DELPHI产品的基础之一,因为UI库(例如VCL和FireMonkey)以及数据库访问库和许多第三方组件都在核心RTL上运行。这就是为什么对RTL进行更改升级特别重要,因为它们往往会影响所有开发人员。以下是一些即将推出的重要升级。

位计数标准函数

我们为常见的低级位处理操作引入了新的标准函数,如下所示。

  • 计算前导零:计算参数X的最高有效一位之前的前导零位的数量。如果X为零,则返回位宽。即CountLeadingZeros32为32,CountLeadingZeros64为64

  • 计算尾随零:计算参数X的最低有效一位之后的尾随零位数。如果X为零,则返回位宽。例如,CountTrailingZeros32为32,CountTrailingZeros64为64。

  • 计数填充:计算参数X的1的个数。返回值的范围是0到位宽度。即CountPopulation32为32,CountPopulation64为64

经典类库的其他升级功能

  • TCustomIniFile类具有以下两种方法:WriteInt64和ReadInt64

  • TGUID类型具有新的IsEmpty方法

  • 现在,TJSONArray类的Items属性是默认的数组属性,允许您编写myJArray [2]而不是myJArray.Items [2]

更好的流缓冲

TStream基类的CopyFrom函数曾经具有用于复制数据的固定常量缓冲区(设置为60K)。这对于复制大型流可能非常低效。新的默认值为1MB,但是该方法还有一个附加参数,您可以根据所执行的复制操作(源流和目标流)使用该参数提供特定的缓冲区大小。该方法的新签名是   

function CopyFrom(const Source: TStream; Count: Int64 = 0;

  BufferSize: Integer = $100000): Int64;


JSON性能优化

  • JSON读取优化:TJSONReader现在快了50%

  • 优化将已排序的StringList分配给另一个StringList

  • RTTI性能改进包括:

    • TRttiMethod.Invoke快约4倍

    • TVirtualInterface调用快约1.7倍

    • TRttiType.GetXxxx(AName)方法快约10倍

    • 对于TValue,几个操作更快


  • System.Classes中的QuickSort操作现在更加高效

FreeAndNil

我们更新了FreeAndNil过程的签名,以避免将其与接口引用和其他不受支持的数据类型一起使用。现在声明需要引用一个TObject:

procedure FreeAndNil(const [ref] Obj: TObject); inline;

这意味着FreeAndNil的错误使用现在将导致编译器错误。在过去,泰山老父不会发现错误的用法,从而导致难以解决的错误。请注意,尽管将参数声明为const,但确实修改了by-reference变量。

其他类库功能修改

  • 我们已删除了一些阻止某些控制台应用程序在Windows Server Core上运行的依赖项

  • TStringHelper.GetHashCode方法已更新为在对字符串进行哈希处理之前不将其大写,因此其结果与其他内部操作(如TStringComparer类)匹配。

这只是部分预期。我们还在并行编程库,AppTethering,REST和HTTP客户端库以及其他Delphi RTL子系统中做了大量工作。希望这些改进(即使相对较小)也将因其在Delphi开发人员每天的工作中所产生的积极影响而受到赞赏。









联系电话:
020-00000000
联系电话:
020-00000000
联系电话:
020-12345678