Программирование мобильных устройств на платформе .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 {
//Если первым символом является "_", то первым сегментом будет ""
Поделиться:
Популярные книги
Адвокат Империи 14
14. Адвокат империи
Фантастика:
городское фэнтези
аниме
попаданцы
5.00
рейтинг книги
Приключения русского дебютанта
Проза:
современная проза
5.00
рейтинг книги
Последний Паладин. Том 5
5. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Как я строил магическую империю
1. Как я строил магическую империю
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эпоха Опустошителя. Том VIII
8. Вечное Ристалище
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Дважды одаренный. Том III
3. Дважды одаренный
Фантастика:
альтернативная история
аниме
фэнтези
фантастика: прочее
юмористическое фэнтези
5.00
рейтинг книги
Кодекс Охотника. Книга XXVI
26. Кодекс Охотника
Фантастика:
попаданцы
5.00
рейтинг книги
Вечный. Книга II
2. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Печать Пожирателя
1. Пожиратель
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Вечный. Книга VI
6. Вечный
Фантастика:
рпг
фэнтези
5.00
рейтинг книги
Дважды одаренный. Том VIII
8. Дважды одаренный
Фантастика:
боевая фантастика
альтернативная история
аниме
попаданцы
5.00
рейтинг книги
Рассвет русского царства 3
3. Новая Русь
Фантастика:
историческое фэнтези
альтернативная история
5.00
рейтинг книги
Менталист. Конфронтация
2. Выиграть у времени
Фантастика:
боевая фантастика
6.90
рейтинг книги
Третий. Том 5
5. Отпуск
Фантастика:
космическая фантастика
фантастика: прочее
5.00