Чтение онлайн

на главную - закладки

Жанры

Программирование мобильных устройств на платформе .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
рейтинг книги
Адвокат Империи 14

Приключения русского дебютанта

Штейнгарт Гари
Проза:
современная проза
5.00
рейтинг книги
Приключения русского дебютанта

Последний Паладин. Том 5

Саваровский Роман
5. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 5

Как я строил магическую империю

Зубов Константин
1. Как я строил магическую империю
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Как я строил магическую империю

Эпоха Опустошителя. Том VIII

Павлов Вел
8. Вечное Ристалище
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Эпоха Опустошителя. Том VIII

Дважды одаренный. Том III

Тарс Элиан
3. Дважды одаренный
Фантастика:
альтернативная история
аниме
фэнтези
фантастика: прочее
юмористическое фэнтези
5.00
рейтинг книги
Дважды одаренный. Том III

Кодекс Охотника. Книга XXVI

Винокуров Юрий
26. Кодекс Охотника
Фантастика:
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXVI

Вечный. Книга II

Рокотов Алексей
2. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга II

Печать Пожирателя

Соломенный Илья
1. Пожиратель
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Печать Пожирателя

Вечный. Книга VI

Рокотов Алексей
6. Вечный
Фантастика:
рпг
фэнтези
5.00
рейтинг книги
Вечный. Книга VI

Дважды одаренный. Том VIII

Тарс Элиан
8. Дважды одаренный
Фантастика:
боевая фантастика
альтернативная история
аниме
попаданцы
5.00
рейтинг книги
Дважды одаренный. Том VIII

Рассвет русского царства 3

Грехов Тимофей
3. Новая Русь
Фантастика:
историческое фэнтези
альтернативная история
5.00
рейтинг книги
Рассвет русского царства 3

Менталист. Конфронтация

Еслер Андрей
2. Выиграть у времени
Фантастика:
боевая фантастика
6.90
рейтинг книги
Менталист. Конфронтация

Третий. Том 5

INDIGO
5. Отпуск
Фантастика:
космическая фантастика
фантастика: прочее
5.00
рейтинг книги
Третий. Том 5