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

ベンチマークで見るDelphi Arm64ECの実力

Minecraft style race title screen showing black ARM car and blue X64 car on a track at sunset with a traffic light title reads Arm64EC vs x64 with Delphi and Japanese menu options in the center

2026年にリリースされた RAD Studio 13.1 Florence は様々な機能の追加や改善が施され、より洗練されたものとなりました。

なかでも  Delphi 13.1 では Arm 版 Windows(Arm64EC) のネイティブコンパイラツールチェインが導入され、Windows 11 on Arm 向けのネイティブアプリケーションを構築することが可能になったことは注目すべき点です。Windows 11 と Arm にまつわる現状や Delphi 開発に対する影響や注意事項は、別途ブログ記事『 Windows on Arm時代に備える:Delphi 13.1でArm64ECに対応した背景』等で紹介させていただきました。こちらも併せてご覧になってください。
そしてやはり気になるのは『Arm 向けには Arm64EC ターゲットでビルドすべきなの? 従来の x86/x64 と違いはあるの?』という疑問です。
そこで今回は、同一の Delphi コードから Win64 版と Arm64EC 版をビルドし、それぞれの処理速度を比較してみました。

結論からお伝えすると、「Arm64EC 対応を検討する価値は十分にある」と考えられる結果となりました。ぜひ、最後までご覧ください。

テストケース

テストの基本的な方針は以下のとおりです:

  •   Delphi 13.1で作成したテストプログラム(Windows コンソールアプリケーション)を作成します。
  •   テストプログラムは、同じプロジェクト(コード)から Win64(x64) と Arm64EC の実行ファイル(EXE)をビルドし、同じコンピューターに配置します。
  •   テストは複数回実施し、それぞれプログラム開始~終了までの時間を記録し、比較します。

テストプログラムの実行環境は図のとおり(クリックで図が拡大します) macOS で動作する仮想環境に Windows 11 on Arm をインストールしたものを使用します:
System information panels showing Apple Silicon CPU at 20 GHz 4 cores 8 GB RAM VMware SVGA 3D graphics 4 MB and 128 GB storage

  • OS: Windows 11 on Arm(仮想環境で実行)
  • CPU: Apple silicon (2.00 GHz) (4 プロセッサ)
  • RAM: 8.00GB
  • Strage(SSD): 128GB (約 55 GBの空き)

実際にテストを行う前に、PassMark Software 社 が提供する PerfomanceTest アプリケーション で CPU パフォーマンス測定を実施してみました。
PerfomanceTest には Windows on Arm 版と x86-64 版が提供されており、これらを今回の検証環境である Windows on Arm コンピュータ上で実行し、スコアを比較しました。図はその結果です(クリックで図が拡大します)。

Split screen PerformanceTest 111 left ARM panel shows CPU Mark 10294 33rd percentile right x64 panel shows CPU Mark 4068 10th percentile

Arm 版 PerformanceTest で測定した結果(左) と x86-64 版 PerformanceTest (右)で測定した結果とでは大きな差が出ることを確認出来ました(各スコアについての詳細な考察については省略します)。
このため、Windows 11 on Arm で実行するアプリケーションでより良いパフォーマンスを獲得するには、アプリケーションを Arm64EC アーキテクチャにすることが基本的な考え方になることが、PerformanceTest の結果からも確認できます。
それでは、Delphi で作成した Arm64EC アプリケーションも同様の結果になるのでしょうか?次のセクションで検証したいと思います。

テストケース1: CPU演算処理

1つ目のテストケースは、極めて単純な CPU 演算とし、ループカウンタで指定の回数分の加算処理を繰り返します。
テストコードの内容は以下のとおりです。

テストの結果は以下のとおりです。左が Arm64ECビルド、右が Win64 ビルドでの結果です(クリックで図が拡大します):

Side by side terminal windows titled Arm64 and Win64 showing 10 line ping results Arm64 entries run ~160190 ms Win64 entries ~248260 ms with X=125000000250000000 values in parentheses indicating timestamps Used to compare latency between architectures
Arm64EC 向けにビルドした場合の平均実行時間は約 167ms であるのに対し、x64 では約 252ms と x64 版と比較して約 1.5 倍の差が確認できました
この結果から、本テストケースでは、Windows 11 on Arm 上で x86/x64 アプリケーション実行時に必要となるエミュレーションが実行時間に直接影響していることが考えられます。
ここでいうエミュレーションとは、x86/x64 向けにコンパイルされた命令を、実行時に Arm 向けの命令へ変換しながら処理を進める仕組みを指します。この変換処理には一定のオーバーヘッドが伴うため、単純な CPU 演算ではその影響が性能差として現れやすくなります。

テストケース2:画像変換処理

次は、実際の画像処理を伴うケースを試します。
JPEG ファイルをグレースケール化しつつ、BMP ファイルへ変換する処理を行います。

グレースケールへ変換する際の計算方法はいくつかありますが、今回は単純平均法とよばれる方法を使用します。
例えばピンク (R:255, G:192, B:203)をグレースケールする場合は、(255 + 192 + 203) / 3 = 216.6666.. となり、この値を整数に丸めてR,G,Bそれぞれに割り当てます。同じようにこれをピクセルの数だけ行います。この『加算と除算の繰り返し』が CPUへの主な負荷となります。
一般的なスマートフォン写真のファイルサイズでは処理時間が短く、測定誤差の影響を受けやすいため、今回は こちら の大型画像を使用しました。30000 x 22943 ピクセル、約170MB の JPEG ファイルです。

テスト結果は以下のとおりです。左が Arm64ECビルド、右が Win64 ビルドでの結果です(クリックで図が拡大します):

Split terminal view comparing Arm64 and Win64 runtimes Arm64 trials 16002 ms 17549 ms 17301 ms Win64 trials 28034 ms 24466 ms 26417 ms

このように、テストケース1と同様、本テストでも Arm64EC 版は x64 版に対して約1.5倍高速という結果になりました。
もちろん、今回の2つのテストケースのみをもって「すべての Delphi アプリケーションで Arm64EC が高い性能を発揮する」と結論付けることはできません。一方で、今回の検証では、Windows on Arm 環境において Delphi の Arm64EC ターゲットが性能面で有効に機能するケースを確認できました。
テストケース2のコードは以下のとおりです。

テストケース3: CSVインポート処理

最後のテストケースでは、InterBase 15 を別コンピュータ上に配置し、図のような (クリックで図が拡大します) CSV インポート処理を実行し、クライアント・サーバ型アプリケーションを想定した検証を行います。

CSV import flow diagram client reads CSV loops through rows creates INSERT SQL sends SQL to server checks final row then completes server receives and writes data to database
CSV ファイルは 日本郵便株式会社が公開している 郵便番号データダウンロード よりおよそ 12 万件のデータを収録したものを使用します。
これまでのテストケースでは、スタンドアロンアプリケーションとして高い負荷がかかる処理を中心に確認してきました。一方、今回のテストケースでは、データ書き込みなどの主要処理はデータベースサーバ側で実行されるため、クライアント側コンピュータの CPU 性能への依存度は比較的小さくなります。このような条件下でも、Arm64EC ターゲットによる性能差が確認できるのかを検証します。

テスト結果は以下のとおりです。左が Arm64ECビルド、右が Win64 ビルドでの結果です(クリックで図が拡大します):

Side by side terminals Arm64 on the left and Win64 on the right each showing three tests Arm64 results  Test1 1st run 157807 ms Test2 214221 ms Test3 183951 ms Win64 results  Test1 1st run 1777347 ms Test2 189064 ms Test3 173270 ms

これまでのテストケースでは Arm64EC 版が明確に高速となる結果を確認できましたが、今回のテストケースでは大きな性能差は確認できませんでした。
今回のテストケースでは、CSV の読み込みや SQL 送信はクライアント側で実行されるものの、実際のデータ書き込み処理はデータベースサーバ側へ依存します。そのため、これまでのスタンドアロン型テストケースと比較すると、クライアント側 CPU 性能の影響が小さくなり、Arm64EC と Win64 の差が表れにくくなった可能性があります。
この結果から、Arm64EC の優位性は常に一定ではなく、アプリケーションの処理内容やシステム構成に大きく左右されることが分かります。

テストケース3のテストコードとデータベース(InterBase15)のテーブル定義は以下のとおりです。

まとめ

冒頭でお伝えした通り、今回ご紹介したテストケースからは、「Delphi Arm64EC 対応を検討する価値は十分にある」と考えられる結果が得られました。

特に、CPU 負荷の高い処理では、Arm64EC 版が Win64 版を大きく上回る結果となっており、Windows on Arm 環境におけるネイティブ実行の効果を確認することができました。一方で、クライアント・サーバ型アプリケーションのような処理負荷が分散されるテストケースでは、Arm64EC と Win64 の性能差は小さく、結果が大きく変化しませんでした。

このことから、すべての Delphi プロジェクトにおいて Arm64EC 対応が喫緊の課題となる、というわけではないということが分かります。
一方で、Windows 環境において Arm アーキテクチャ搭載デバイスが増加傾向にあることは、市場動向からも確認できます。特に、省電力性を活かした高いモビリティへの注目は徐々に高まりつつあります。そのため、将来的な環境変化へ備える意味でも、Delphi アプリケーションの Arm 対応について早い段階から知見を蓄積しておく価値は十分にあるのではないでしょうか。

本記事が、皆様の Arm 対応検討の参考となれば幸いです。

あわせて読みたい

 

RAD Studio 13.1 Florence Now Available See What's New in RAD Studio 13.1 Delphi is 31 - Webinar Replay

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

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

IN THE ARTICLES