Have an amazing solution built in RAD Studio? Let us know. Looking for discounts? Visit our Special Offers page!
DelphiRAD Studio

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

faster delphi rtl

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

新しいTParallelArray クラス

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

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

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

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

新しいTOrderedDictionary クラス

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

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

  • 順番付きディクショナリを作成し、いくつかの要素を追加する
  • 出力と、1億回キーを検索するのにかかった時間を表示する
  • キーでソートし、再度出力を表示し、1億回の検索呼び出しを繰り返す (はるかに高速です!)
  • 値でソートし、再度表示する
  • 要素を追加する。並べ替え順序で要素が追加されていないことを証明するには、必要に応じて並べ替える必要があります (複数の要素を挿入する場合は、通常、この方が高速です)

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

RTLのさらなる機能強化

  • TRegistryクラスは、rdMultiStringのサポートが改善され、新しいメソッド ReadNoneおよびWriteNone(Windowsのレジストリ値の型であるREG_NONEにマップ)が追加されました。
  • System.DateUtilsのRFC822形式の日付のサポートが改善されました。
  • RAD Studioに同梱されているDelphiランタイムパッケージ向けのマップファイルが提供されるようになりました。

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

See What's New in 12.2 Athens See What's New in 12.2 Athens Dev Days of Summer 2-24

Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Start Free Trial   Upgrade Today

   Free Delphi Community Edition   Free C++Builder Community Edition

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

IN THE ARTICLES