Нужен совет "бывалых" по ситуации:
надо для мини-конференции продемонстрировать действенность определённого паттерна.
С помощью фишки Profiler в NetBeans 6 наглядно покажу выигрыш в памяти/скорости на "корявом"(без паттерна) и оптимизированном(с паттерном) мини-проекте.
Конкретного задания нету — полный выбор у меня. Паттерн тоже не определён. Есть лишь тема "эффективность работы паттернов" и план, как я буду отражать эту "эффективность".
Единственное, что более-менее подходит, из найденного — это Flyweight.
Есть ли более очевидные альтернативы ?
Заранее Спасибо.
11.04.08 13:39: Перенесено модератором из 'Java' — Blazkowicz
Re: Выбор паттерна для показа выигрыша в скорости/памяти
Здравствуйте, dementiev, Вы писали:
D>Нужен совет "бывалых" по ситуации: D>надо для мини-конференции продемонстрировать действенность определённого паттерна.
D>С помощью фишки Profiler в NetBeans 6 наглядно покажу выигрыш в памяти/скорости на "корявом"(без паттерна) и оптимизированном(с паттерном) мини-проекте.
D>Конкретного задания нету — полный выбор у меня. Паттерн тоже не определён. Есть лишь тема "эффективность работы паттернов" и план, как я буду отражать эту "эффективность".
D>Единственное, что более-менее подходит, из найденного — это Flyweight.
D>Есть ли более очевидные альтернативы ?
D>Заранее Спасибо.
Каждый паттерн для своих целей используется и он не столько даёт выйгрыш в производительности сколько добавляет расширяемости, удобочитаемости, переносимости и т.п. Можно нагородить паттерны там, где они вообще не нужны и будет полный ппц. А так, например, Iterator чисто для удобства, Decorator как вариант наследования, Adapter чтобы что-то слепить. Biridge чтобы абстрагироваться от конкретной реализации. Не там ищите мне кажется.
Re[2]: Выбор паттерна для показа выигрыша в скорости/памяти
Здравствуйте, mazurkin, Вы писали:
M>С таким абстрактным механистическим подходом, результат, боюсь, будет M>как раз обратным.
Следующая тема на форуме (а то и статья навроде такой Производительность .Net миф или фантастика?
: "Паттерны — зло!".
PS Хотя эта тема тоже шикарная.
M>Паттерны проектирования к оптимизации программирования относятся крайне M>слабо.
К "оптимизации программирования"? Думаю, относятся, да еще как. А вот к оптимизации исполняемого кода — слабо... хм, да вообще никак. И потом, паттерны — это идея, мысль, текст в книге, рисунок на доске — и причем тут скорость/память?
Re: Выбор паттерна для показа выигрыша в скорости/памяти
Здравствуйте, dementiev, Вы писали:
D>С помощью фишки Profiler в NetBeans 6 наглядно покажу выигрыш в памяти/скорости на "корявом"(без паттерна) и оптимизированном(с паттерном) мини-проекте.
Производительность и объем используемой памяти это для вас единственный критерий качества исходного кода?
А знаешь ли ты что память и производительность зачастую конкурирующие ресурсы? Чтобы добится лучшей производительность зачастую нужно затратить больше памяти. А экономия расхода памяти в свою очередь обычно приводит к падению производительности.
Re: Выбор паттерна для показа выигрыша в скорости/памяти
Здравствуйте, dementiev, Вы писали:
D>надо для мини-конференции продемонстрировать действенность определённого паттерна. D>С помощью фишки Profiler в NetBeans 6 наглядно покажу выигрыш в памяти/скорости на "корявом"(без паттерна) и оптимизированном(с паттерном) мини-проекте.
Вам нужно продемонстрировать увеличение не производительности программы, а производительности программиста. Выигрыш в памяти/скорости человека, а не компьютера.
Нужен не профилировщик, а просто примеры исходников/диаграмм без определённого паттерна и с таковым. А потом проиллюстрировать, насколько проще и быстрее во втором случае: рефакторить, дополнять, модифицировать исходя из новых требований, искать ошибки, не допускать новых ошибок. В этом случае можете выбрать любой паттерн из GoF.
А в производительности реализация почти любого паттерна уступит прямолинейному негибкому хардкоду.
Глаза у меня добрые, но рубашка — смирительная!
Re: Выбор паттерна для показа выигрыша в скорости/памяти
пример использования, например, каскадное меню для сайта
когда пользователь заходит на сайт, загружается только верхний уровень меню
когда пользователь раскрывает элемент меню, загружается подменю этого элемента
экономятся вычислительные ресурсы сервера, траффик, увеличивается скорость загрузки страницы
то есть можно продемонстрировать два варианта:
вариант, когда меню собирается полностью, и вариант, когда меню подгружается по частям