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