Программирование мобильных устройств на платформе .NET Compact Framework
Шрифт:
private void ResetTestArray(ref string[] testArray) {
if (testArray == null) {
testArray =new string[6];
}
testArray[0] = "big_blue_duck";
testArray[1] = "small_yellow_horse";
testArray[2] = "wide_blue_cow";
testArray[3] = "tall_green_zepplin";
testArray[4] = "short_blue_train";
testArray[5] = "short_purple_dinosaur";
}
Листинг 8.3.
Тестовый пример, демонстрирующий неэкономное распределение памяти (типичный первоначальный вариант реализации интересующей нас функции)
Примечание. В этом примере используется класс PerformanceSampling, определенный ранее в данной книге.
private void button2_Click(object sender, System.EventArgs e) {
//Вызвать сборщик мусора, чтобы быть уверенными в том,
//что тест начнется с чистого состояния.
//ПРИБЕГАЙТЕ К ЭТОЙ МЕРЕ ТОЛЬКО В ЦЕЛЯХ ТЕСТИРОВАНИЯ! Вызовы
//сборщика мусора в программах вручную будут приводить к снижению
//общей производительности приложений!
System.GC.Collect;
string [] testArray = null;
//--------------------------------------------
//Просмотреть элементы массива и найти
//те из них, в которых средним словом является
//"blue". Заменить "blue" на "orange"
//--------------------------------------------
//Запустить секундомер для нашего теста!
PerformanceSampling.StartSample(0, "WastefulWorkerClass");
WastefulWorkerClass workerClass1;
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[idx]);
//Если
средним словом является "blue", заменить его на "orange"
if (workerClass1.MiddleSegment == "blue") {
//Заменить средний сегмент
workerClass1.MiddleSegment = "orange";
//Заменить слово
testArray[idx] = workerClass1.getWholeString;
}
} //конец внутреннего цикла for
}//конец внешнего цикла for
//Получить время окончания теста
PerformanceSampling.StopSample(0);
System.Windows.Forms.MessageBox.Show(PerformanceSampling.GetSampleDurationText(0));
}
Листинг 8.4. Рабочий класс для первого тестового примера
using System;
public class WastefulWorkerClass {
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 WastefulWorkexClass(string in_word) {
int index_segment1;
//Осуществляем поиск символов подчеркивания ("_") в строке
index_segment1 = in_word.IndexOf("_",0);
//B случае отсутствия символов "_" все, что нам нужно, это первый сегмент
if (index_segment1 == -1) {
m_beginning_segment = in_word;
m_middle_segment = "";
m_end_segment = "";
return;
}
//Если присутствует символ "_", усечь его
else {
//Если первым символом является "_", то первым сегментом будет ""
Поделиться:
Популярные книги
Дворянская кровь
1. Дворянская кровь
Фантастика:
попаданцы
альтернативная история
7.00
рейтинг книги
Газлайтер. Том 16
16. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Барон диктует правила
4. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Стрелок
5. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Шатун. Лесной гамбит
2. Шатун
Фантастика:
боевая фантастика
7.43
рейтинг книги
Проклятый Лекарь V
5. Каратель
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
На границе империй. Том 3
3. Фортуна дама переменчивая
Фантастика:
космическая фантастика
5.63
рейтинг книги
Новый Рал
1. Рал!
Фантастика:
фэнтези
попаданцы
5.70
рейтинг книги
Его наследник
1. Наследники Сильных
Любовные романы:
современные любовные романы
эро литература
5.87
рейтинг книги
Венецианский купец
1. Венецианский купец
Фантастика:
фэнтези
героическая фантастика
альтернативная история
7.31
рейтинг книги
Мастер темных Арканов
1. Мастер темных арканов
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Всплеск в тишине
5. Венецианский купец
Фантастика:
попаданцы
альтернативная история
5.33
рейтинг книги
Начальник милиции
1. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Возвышение Меркурия. Книга 2
2. Меркурий
Фантастика:
фэнтези
5.00