Прошу простить меня за вопрос n00bish.Вопрос об оптимизации памяти объекта
Пожалуйста, обратите внимание на следующий код:
public class SampleClass
{
public string sampleString { get; set; }
public int sampleInt { get; set; }
}
class Program
{
SampleClass objSample;
public void SampleMethod()
{
for (int i = 0; i < 10; i++)
{ objSample = new SampleClass();
objSample.sampleInt = i;
objSample.sampleString = "string" + i;
ObjSampleHandler(objSample);
}
}
private void ObjSampleHandler(SampleClass objSample)
{
//Some Code here
}
}
В данном примере кода, каждый раз, когда SampleMethod()
называется, она итерацию бы в 10 раз и выделить новое пространство памяти для экземпляра SampleClass
и будет назначать objSample
объект.
Интересно,
Если это плохой подход, как много пространства памяти впустую с ним?
Если это так, то есть ли
лучший подход для повторного использования/оптимизации выделенной памяти ?
Или, я беспокоюсь по какой-либо причине и попал в ненужный режим микро оптимизации? :)
Редактировать: Также рассмотрите ситуацию, когда такой метод используется в многопоточном окружении. Это что-нибудь изменит?
Будет ли ответ оставаться прежним даже для многопоточного подхода? – 2010-12-07 02:52:36
Абсолютно. Фактически, при многопоточности, если вы можете иметь отдельный набор данных для каждого потока, это облегчает программирование MT. Но если у вас есть, скажем, набор элементов, которые нужно перебирать и выполнять некоторую обработку на каждом из них - где данные не разделяются между экземплярами - многопоточность хорошо работает для этого (и .NET имеет новую параллельную модель для этого вид вещи тоже) – 2010-12-07 10:51:34