Delphi 10.4 Runtime Library運行時類庫升級增強功能

Delphi Runtime Library是DELPHI產品的基礎之一,因爲UI庫(例如VCL和FireMonkey)以及數據庫訪問庫和許多第三方組件都在覈心RTL上運行。這就是爲什麼對RTL進行更改升級特別重要,因爲它們往往會影響所有開發人員。以下是一些即將推出的重要升級。歡迎加入Delphi開發局QQ羣:32422310

位計數標準函數

我們爲常見的低級位處理操作引入了新的標準函數,如下所示。

  • 計算前導零:計算參數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,但是該方法還有一個附加參數,您可以根據所執行的複製操作(源流和目標流)使用該參數提供特定的緩衝區大小。該方法的新簽名是

// class TStream
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開發人員每天的工作中所產生的積極影響而受到讚賞。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章