Różnice wydajności między przeładowaniem a parametrami opcjonalnymi?

Nie, nie otrzymałem odpowiedzi ↑

Zastanawiam się, czy powinienem używać opcjonalnych parametrów w C #. Do tej pory zawsze byłem przeciążony metodami. Ale opcjonalne parametry są również miłe, czystsze i mniej kodu. I używam ich w innych językach, więc jestem też do nich przyzwyczajony. Czy jest coś, co przemawia przeciwko używaniu ich? Wydajność to dla mnie najważniejszy punkt. Czy spadnie?

Przykładowy kod:

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();
    }
}

Zmierzyłem czas potrzebny na kilka milionów połączeń przeciążeniowych i opcjonalne wywołania parametrów.

opcjonalne parametry z ciągami znaków: 18%wolniej (2 parametry, wydanie)opcjonalne parametry z intami: <1%szybciej (2 parametry, wydanie)

(A może kompilatory optymalizują lubbędzie zoptymalizować te opcjonalne wywołania parametrów w przyszłości?)

questionAnswers(2)

yourAnswerToTheQuestion