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

Салмре Иво

Шрифт:

PerformanceSampling.StopSample(2);

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

}

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

using System;

public class LessAllocationsWorkerClass {

public string MiddleSegment {

set { m_middleSegmentNew= value; }

}

private string m_middleSegmentNew;

private int m_index_1st_undscore;

private int m_index_2nd undscore;

private string m_stringIn;

public void ReuseClass(string in_word) {

//----------------------------------------------

//Для повторного использования класса необходимо

//полностью очистить внутреннее состояние

//----------------------------------------------

m_index_1st_undscore = -1;

m_index_2nd_undscore = -1;

m_middleSegmentNew= null;

m_stringIn = in_word; //Это не приводит к созданию копии строки

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

m_index_1st_undscore = in_word.IndexOf("_",0);

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

if (m_index_1st_undscore == -1) {

return;

}

//Найти второй символ " "

m_index 2nd_undscore = in_word.IndexOf(" ", m_index_1st_undscore + 1);

}

public int CompareMiddleSegment(string compareTo) {

//B случае отсутствия второго символа "_" отсутствует и средний сегмент

if (m_index_2nd_undscore < 0) {

//Если мы сравниваем с пустой строкой,

//то это означает совпадение

if((compareTo == null) || (compareTo == "")) {return 0;}

return -1;

}

//Сравнить средний сегмент с первым и вторым сегментами

return System.String.Compare(

m_stringIn, m_index_1st_undscore + 1, compareTo, 0, m_index_2nd_undscore - m_index_1st_undscore -1);

}

public string getWholeString {

//Если полученный средний сегмент не является новым,

//возвратить исходный сегмент

if (m_middleSegmentNew == null) {

return m_stringIn;

}

//Создать возвращаемую строку

return m_stringIn.Substring(0, m_index_1st_undscore + 1) +

m_middleSegmentNew +

m_stringIn.Substring(m_index_2nd_undscore, m_stringIn.Length - m_index_2nd_undscore);

}

}

Анализ описанных выше шагов последовательной оптимизации

Обычно в тонкой настройке алгоритмов таятся значительные резервы. Самое важное при этом — это контролировать, обеспечивает ли выполнение настройки выигрыш в производительности, на который вы рассчитывали. Некоторыми своими "усовершенствованиями" вы можете непреднамеренно ухудшить производительность из-за того, что с ними связано распределение памяти, о котором вы можете не знать, или в силу каких-либо других причин. В процессе разработки приведенного выше кода у меня несколько раз возникали ситуации, когда я считал, что вносимые изменения должны улучшить результаты, но после проведения соответствующих измерений и при более глубоком рассмотрении оказывалось, что эти изменения приносили только вред. Всегда измеряйте показатели производительности и проводите их сравнительный анализ для различных вариантов реализации!

Кроме того, очень важно проводить тестирование на фактическом оборудовании, для которого предназначено ваше приложение, чтобы лучше почувствовать реальные условия работы с ним "на устройстве". Эмуляторы очень удобно использовать в процессе проектирования и базовой настройки приложения, но результаты, полученные на физическом устройстве, могут быть другими из-за различий в свойствах процессоров, памяти и других факторов. Одни программы могут выполняться на физических устройствах быстрее, другие — медленнее. Последнее слово всегда остается за фактическим оборудованием, которое будут использовать конечные пользователи. По тем же причинам очень важно измерять производительность при выполнении программы с подключенным отладчиком и без него. В некоторых случаях подключение отладчика резко снижает производительность.

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

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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