Различия в производительности между перегрузкой или необязательными параметрами?
Нет, там не ответили ↑
Интересно, должен ли я использовать необязательные параметры в 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 параметра, выпуск)(А может компиляторы оптимизируют илибудем оптимизировать эти необязательные вызовы параметров в будущем?)