//начинался с чистого состояния.
//ПРИБЕГАЙТЕ К ЭТОЙ МЕРЕ ТОЛЬКО В ЦЕЛЯХ ТЕСТИРОВАНИЯ! Вызовы
//сборщика мусора в программах вручную будут приводить к снижению
//общей производительности приложений!
System.GC.Collect;
string[] testArray = null;
//--------------------------------------------
//Просмотреть элементы массива и найти
//те из них, в которых средним словом является
//"blue". Заменить "blue" на "orange"
//--------------------------------------------
//Запустить секундомер!
PerformanceSampling.StartSample(1, "LessWasteful");
//--------------------------------------------
//БОЛЕЕ ЭКОНОМНЫЙ СПОСОБ: Распределить память
//для объекта до вхождения в цикл
//--------------------------------------------
LessWastefulWorkerClass workerClass1;
workerClass1 = new LessWastefulWorkerClass;
int outerLoop;
for (outerLoop = 0; outerLoop < LOOP_SIZE; outerLoop++) {
//Присвоить элементам массива значения, которые
//мы хотим использовать при тестировании
ResetTestArray(ref testArray);
int topIndex = testArray.Length - 1;
for(int idx = 0; idx <= topIndex; idx++) {
//---------------------------------------------------------
//Теперь вместо повторного распределения памяти для объекта
//нам достаточно лишь повторно воспользоваться им
//---------------------------------------------------------
//workerClass1 = new WastefulWorkerClass(
// testArray[topIndex]);
workerClass1.ReuseClass(testArray[idx]);
//Если средним словом является "blue", заменить его на "orange"
if (workerClass1.MiddleSegment == "blue") {
//Заменить средний сегмент
workerClass1.MiddleSegment = "orange";
//Заменить слово
testArray[idx] = workerClass1.getWholeString;
}
}
}
//Остановить секундомер!
PerformanceSampling.StopSample(1);
System.Windows.Forms.MessageBox.Show(PerformanceSampling.GetSampleDurationText(1));
}
using System;
public class LessWastefulWorkerClass {
private string m_beginning_segment;
public string BeginSegment {
get { return m beginning_segment; }
set { m_beginning_segment = value; }
}
private string m_middle_segment;
public string MiddleSegment {
get { return m_middle_segment; }
set { m_middle segment = value; }
}
private string m_end_segment;
public string EndSegment {
get { return m_end_segment; }
set { m_end_segment = value; }
}
public void ReuseClass(string in word) {
//----------------------------------------------
//Для повторного использования класса необходимо
//полностью очистить внутреннее состояние
//----------------------------------------------
m_beginning_segment = "";
m_middle_segment = "";
m_end_segment = "";