ホームページ >バックエンド開発 >C++ >C# 例外はリターン コードよりどれくらい遅いですか?

C# 例外はリターン コードよりどれくらい遅いですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-26 12:11:09472ブラウズ

How Much Slower Are C# Exceptions Than Return Codes?

C# の例外処理メカニズムのパフォーマンスのオーバーヘッドは、スタックが浅い場合には重大ではありませんが、パフォーマンスの低下には依然として注意が必要です。

最近の研究では、テスト プログラムを通じて、100 万件の例外を処理するのに約 29914 ミリ秒かかることが示されました。これは、1 ミリ秒あたり約 33 件の例外に相当します。それでも、ほとんどの場合、戻りコードの代わりに例外を使用することで十分効率的です。

ただし、例外の処理は戻りコードよりも少なくとも 30,000 倍遅いことに注意することが重要です。さらに、これらのデータは最小限の推定値にすぎず、実際のアプリケーション シナリオでは追加のパフォーマンス オーバーヘッドが発生します。

テストは、Intel Core2 Duo T8100 @ 2.1 GHz プロセッサを搭載したラップトップで、.NET 4.0 フレームワーク、リリース ビルドを使用し、デバッガー (パフォーマンスに大きな影響を与える可能性がある) を除いて実施されました。

以下は実験で使用したテストコードです:

<code class="language-csharp">static void Main(string[] args)
{
    int iterations = 1000000;
    Console.WriteLine("Starting " + iterations.ToString() + " iterations...\n");

    var stopwatch = new Stopwatch();

    // 测试异常
    stopwatch.Reset();
    stopwatch.Start();
    for (int i = 1; i <= iterations; i++)
    {
        try
        {
            // 模拟异常抛出
            throw new Exception();
        }
        catch (Exception)
        {
            // 捕获异常
        }
    }
    stopwatch.Stop();
    Console.WriteLine("Exceptions took: " + stopwatch.ElapsedMilliseconds + "ms");


    // 测试返回码 (此处应添加返回码测试代码)

}</code>

(注: 元のテキストにはリターン コードのテスト コード部分がありません。プレースホルダーはここに保持されます)

以上がC# 例外はリターン コードよりどれくらい遅いですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。