2020年11月06日
川俣晶の縁側ソフトウェアC# コーディング How Tototal 902 count

【入門級】ローカル関数にstaticを付けると本当に速くなるか?

Written By: 川俣 晶連絡先

 ローカル関数にstaticを付けると速くなると言われています。

 本当でしょうか?

 確かめてみましょう。

 サンプルソースのloadl1()はstaticなし。loadl2()はstaticありです。

 確かにstaticが付いていないloadl2()の方が短い時間で処理が終わっていますね。

罠の数々 §

  • staticを付けると親メソッドの変数にアクセスできなくなってしまう。それが重要ならstaticが付けられない。しかし値を引数で渡す手もある。

参考リンク §

static (C# リファレンス)

 staticキーワードを付けると速度に大きく影響する機能とそうではない機能がある。その差は何か、上記のリンクを辿って考えて見よう。

リポジトリ §

https://github.com/autumn009/cshowto

LocalSpeed §

using System;

class Program

{

    private static int count2 = 0;

    static void Main()

    {

        int count1 = 0;

        const int loop = 1000000000;

        var start1 = DateTime.Now;

        for (int i = 0; i < loop; i++) local1();

        Console.WriteLine(DateTime.Now-start1);

        var start2 = DateTime.Now;

        for (int i = 0; i < loop; i++) local2();

        Console.WriteLine(DateTime.Now - start2);

        void local1()

        {

            count1++;

        }

        static void local2()

        {

            count2++;

        }

    }

}

実行結果 (実行結果は筆者のPCによる。マシンの環境によって数値は変化する)

00:00:05.1907502

00:00:03.5706732

Facebook

COOL C# CREW

C#ハウツー連載の解説増量、カラーのソース、新規書き下ろし追加の読みやすい単行本はこちら。

C#ハウツー: 逆引き入門・こんな機能はどう書くの?
キーワード【 川俣晶の縁側ソフトウェアC# コーディング How To
【C# コーディング How To】の次のコンテンツ
2020年
11月
07日
【入門級】実行するごとにオンとオフを切り換える
3days 0 count
total 948 count
【C# コーディング How To】の前のコンテンツ
2020年
11月
04日
【入門級】値を参照できるが代入できない名前を定義する3つの方法
3days 0 count
total 1001 count

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

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

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

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

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

http://mag.autumn.org/tb.aspx/20201106091213
サイトの表紙【C# コーディング How To】の表紙【C# コーディング How To】のコンテンツ全リスト 【C# コーディング How To】の入手全リスト 【C# コーディング How To】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

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