サイトアイコン Embarcadero RAD Studio, Delphi, & C++Builder Blogs

並列配列と順番付きディクショナリによるDelphi RTLの高速化

faster delphi rtl

RAD Studio 12.2では、多くの新機能の追加や多数の機能強化が行われています。そのうちDelphi ランタイム ライブラリ (RTL) の分野にも注目すべき機能強化がいくつか行われております。

新しいTParallelArray クラス

System.Threadingユニットには、配列項目に対して &ForSortなどの処理を並列実行できる新しいTParallelArrayクラスが追加されました。マルチコアシステムでは、これにより処理速度が大幅に向上します。

では、この新しいクラスをどのように使用するのでしょうか?

本ブログでは、2つの同一の配列を作成し、通常のシングルスレッドのSortと新しい並列バージョンでソートするコマンドラインプロジェクトを例に簡単なテストケースをご紹介いたします。

[crayon-6767a2fa6a31c277782121/]

今回テストケースの検証のために使用したCPUのスペックは、(Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz) で、このPC環境で実行したところ、585%の改善という素晴らしい結果が得られました。(読みやすくするために出力はミリ秒単位に切り詰められています)

[crayon-6767a2fa6a323544414883/]

新しいTOrderedDictionary クラス

System.Generics.Collectionsユニットには、TDictionary<K,V>から派生した新しいTOrderedDictionaryクラスが追加されました。このOrdered Dictionaryという順番付きディクショナリは、ディクショナリ内にソート メソッドが統合されたディクショナリクラスです。このクラスを使用することによって、ソートされた順序でデータをナビゲートするfor inループを簡単に作成でき、要素の検索も高速化されます。

例として、以下の手順で実行するプロジェクトをご覧ください。

[crayon-6767a2fa6a326599877187/]

出力結果は、以下の通りです。

[crayon-6767a2fa6a328870234476/]

RTLのさらなる機能強化

今回のブログは以上となります。RAD Studio 12.2で追加された多くの新しいRTL機能を、ぜひプロジェクトで活用してください。

モバイルバージョンを終了