Вход/Регистрация
Программирование мобильных устройств на платформе .NET Compact Framework
вернуться

Салмре Иво

Шрифт:

}

}

//Остановить секундомер!

PerformanceSampling.StopSample(1);

System.Windows.Forms.MessageBox.Show(PerformanceSampling.GetSampleDurationText(1));

}

Листинг 8.6. Рабочий класс для второго тестового примера

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 = "";

int index_segment1;

//Осуществляем поиск символов подчеркивания (" ") в строке

index segment1 = in_word.IndexOf(" ",0);

//B случае отсутствия символов " " все, что нам нужно, это первый сегмент

if (index_segment1 == -1) {

m_beginning_segment = in_word;

return;

}

//Если присутствует символ " ", усечь его

else {

if (index_segment1 == 0) {

} else {

m_beginning_segment = in_word.Substring(0, index_segment1);

}

int index_segment2;

index_segment2 = in_word.IndexOf("_", index_segment1 + 1);

if (index_segment2 == -1) {

m_end_segment = in_word.Substring(index_segment1 + 1);

return;

}

//Установить последний сегмент

m_middle_segment = in_word.Substring(index_segment1 + 1, index_segment2 - index_segment1 - 1);

m_end_segment = in_word.Substring(index_segment2 + 1);

}

}

public string getWholeString {

return m_beginning_segment + "_" + m_middle_segment + "_" + m_end_segment;

}

}

Предшествующий код оставляет возможности для внесения дальнейших улучшений

Предыдущий подход все еще демонстрирует значительную напрасную трату ресурсов, поскольку мы постоянно размещаем и освобождаем строки. Если мы собираемся создать код, обеспечивающий высокую производительность, то от создания лишних строковых объектов следует избавиться.

Избегайте размещения в памяти лишних объектов

Обратите внимание на то, что в приведенном выше коде мы часто вычисляем множество величин, которые нам не нужны. В частности, мы генерируем в каждой итерации цикла, по крайней мере, три новых строки: одну для первого сегмента, одну для среднего сегмента и одну для конечного сегмента исходной строки. Например, строка big_blue_boat разбивается на три различных строки: big, blue и boat. Для создания этих строк требуется определенное время, а, кроме того, впоследствии мы должны освободить занимаемую ими память.

  • Читать дальше
  • 1
  • ...
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: