2021年01月10日
川俣晶の縁側ソフトウェア技術雑記total 691 count

検証・Blazorの実行速度はどれぐらい遅いか? 【その遅さ桁違い】

Written By: 川俣 晶連絡先

前提 §

 ANGF+ISSGの自動テストが、デスクトップとBlazorで60倍ぐらいの速度差があって非現実的と分かってきたので、本当にBlazorは遅いのか簡単なベンチを取ってみることにしました。

 数値は全て自分のPCでの実行結果です。(Releaseビルド。BlazorはChromeで実行)

検証1・数値計算 §

        private static int ext1 = 12;

        private static int ext2 = 34;

        private static int ext3 = 56;

        private static int ext4 = 78;

        private static int testNum()

        {

            int sum = 0;

            for (int i = 0; i < 100000000; i++)

            {

                sum += i + ext1 - ext2 * ext3 / ext4;

                sum += (int)(Math.Sin((double)(i/100))*100);

            }

            return 0;

        }

  • Console 00:00:02.9548852
  • Blazor 00:00:35.9780000

 ざっと計算すると約12ですが、有効桁数は多くないので、大ざっぱに丸めて10倍遅いという結論で良いと思います。

検証2・文字列 §

        private static int testString()

        {

            string s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

            for (int i = 0; i < 80000000; i++)

            {

                string t = s[0].ToString();

                s = s.Substring(1);

                s = s + t;

            }

            return s.Length;

        }

  • Console 00:00:04.3968952
  • Blazor Error: Garbage collector could not allocate 16384u bytes of memory for major heap section.

 例外でギブアップしたので、比較は成立せず。ちなみに文字列の長さは26と25を往復し続けるだけでメモリを大量に使うことはないはずです。しかし、例外が起きるまでの時間を体感で比較しても、【とてつもなく遅い】と言えます。

検証3・sin抜き数値計算 §

        private static int testNum2()

        {

            int sum = 0;

            for (int i = 0; i < 1000000000; i++)

            {

                sum += i + ext1 - ext2 * ext3 / ext4;

            }

            return sum;

        }

  • Console 00:00:04.0124808
  • Blazor 00:04:14.2760000

 ほぼ基礎体力の比較。

 まあ大ざっぱに言って60倍。

 ANGF+ISSGの自動テストが60倍遅かったという根拠はこのあたりに求められそうです。複雑な文字の加工もしないし、ほとんど実数の関数演算もしません。

結論 §

 Blazorは遅いです。どの機能が遅いというわけではなく、基礎的な実行能力が遅いと思われます。ほとんどの時間が入力待ちであるようなプログラムなら良いですが、処理時間が長い用途にはまだ向かないと思われます。

 1980年頃の状況で言えば、下手をするとマシン語とBASICインタプリタぐらいの速度差です。しかし、BASICインタプリタで書かれた優れたプログラムはいくらでもあったので、Blazorも使い方次第でいくらでも使い物になると思われます。

 以上!

オマケ §

 検証3はEdge Devだと00:03:17.1430000となってChromeより速かった。(でも焼け石に水)

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
(ありません)
【技術雑記】の前のコンテンツ
2021年
01月
09日
Blazor WebAssemblyでプロファイルを行いたい
3days 130 count
total 689 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20210110102445
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.34 (Alpha-Test) Copyright (c) 2004-2018 Pie Dey.Co.,Ltd.