Надеюсь, на мой вопрос еще нет ответа, я только нашел this link, но на самом деле я не отвечаю на мой точный вопрос.Разница в производительности между передачей ссылки и использованием локальной переменной
В основном у меня есть класс MyClass
который содержит локальный элемент currentSettings
другого класса Settings
. MyClass
содержит метод DoStuff
, который использует информацию, которая содержится в любом объекте объекта Settings
.
Теперь ситуация: метод никогда не будет вызван внутри самого класса. Некоторые другие классы будут содержать объект MyClass
, и только из него вызывается метод. Теперь у меня есть две возможности:
class MyClass
{
Settings currentSettings = new Settings();
public void DoStuff()
{
//do stuff here using things stored in "currentSettings"
}
public void DoStuff(Settings settings)
{
//do stuff here using things stored in "settings"
}
}
class SomeClass
{
MyClass myClass = new MyClass();
...
//call method somewhere, with two different options:
myClass.DoStuff();
myClass.DoStuff(myClass.currentSettings);
}
Второй вариант, конечно, кажется немного усложненной, однако, он оставляет мне свободу передавать какие-либо настройки к нему, которые не могут быть местный член currentSettings
и что я буду нуждаться в в некоторых случаях.
Теперь меня беспокоит различие в производительности между этими двумя вариантами, и если эталонная передача может быть значительно меньше, чем при использовании локальных настроек, так как этот метод можно назвать очень часто (до пары сто раз в секунду).
Редактировать: Я опубликовал небольшое тестирование производительности в ответах и не смог найти существенной разницы между этими двумя методами.
Попробуйте и измерьте его самостоятельно, но должно быть близко к нулю разница в производительности. –
Извините, да, конечно, я мог (и буду) делать это сам. Это был довольно общий вопрос, могут ли быть существенные различия в некоторых случайных случаях, о которых я не знаю. – phil13131
Не ставьте под угрозу хороший дизайн программного обеспечения для незначительных приростов производительности (предполагая, и я считаю, что в этом сценарии нет значительного выигрыша) –