Различия в производительности между перегрузкой или необязательными параметрами?

Нет, там не ответили ↑

Интересно, должен ли я использовать необязательные параметры в C #. До сих пор я всегда перегружал методы. Но дополнительные параметры тоже хороши, чище и меньше кода. И я использую их на других языках, так что я тоже привык к ним. Есть что-нибудь, что говорит против их использования? Производительность является первым ключевым моментом для меня. Это упало бы?

Пример кода:

class Program
{
    // overloading
    private static void test1(string text1)
    {
        Console.WriteLine(text1 + " " + "world");
    }

    private static void test1(string text1, string text2)
    {
        Console.WriteLine(text1 + " " + text2);
    }

    // optional parameters
    private static void test2(string text1, string text2 = "world")
    {
        Console.WriteLine(text1 + " " + text2);
    }

    static void Main(string[] args)
    {
        test1("hello");
        test1("hello", "guest");

        test2("hello"); // transforms to test2("hello", "world"); ?
        test2("hello", "guest");

        Console.ReadKey();
    }
}

Я измерил время, необходимое для нескольких миллионов вызовов перегрузки и необязательных вызовов параметров.

необязательные параметры со строками: 18%помедленнее (2 параметра, выпуск)дополнительные параметры с целочисленными значениями: <1%Быстрее (2 параметра, выпуск)

(А может компиляторы оптимизируют илибудем оптимизировать эти необязательные вызовы параметров в будущем?)

Ответы на вопрос(2)

Ваш ответ на вопрос