Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2013, 21:41   #11
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от alik98 Посмотреть сообщение
Если я все правильно понял, то вряд ли это выйдет. Все равно 90% строки состоит из команд перемещения позиции , так что это мало чем отличается от прежнего предложения по производительности.
Отнюдь.
При первом проходе Вы ничего не рисуете. Значит, в том случае, если именно рисование занимает основное время, Вы потратите его только однажды.
Во втором проходе Вы ничего не вычисляете. Значит, если именно вычисление занимает основное время, Вы, опять же, потратите его только однажды.
Т.е. в любом случае о двукратном увеличении времени работы речи не идет.
Цитата:
Да еще и запоминание каждого отрезка по двум точкам (как я понял), вместо хранения каждой точки единожды в случае с фракталами значительно увеличит количество пожираемой памяти.
Да, по памяти будет несколько хуже. Вопрос в том, насколько это критично.
Объем современного экрана обычно не превосходит 2 Мп, а доступное количество памяти - обычно не менее 2 Гб, значит, нам никак не потребуется больше 2 миллионов отрезков и на каждый из них мы можем потратить до 1 Кбайта. Нам же достаточно 11 байт: по два двухбайтных числа для концов отрезка и 3 байта - для цвета.
Цитата:
Но для начала нужно знать хотя бы в общих чертах как работает определенный алгоритм. Спасибо конечно, но или почитайте, или не тратьте силы зря.
Вы опубликовали сообщение, не написав даже, о каком именно фрактале идет речь. А их масса самых разных (в частности, фракталы, которые строятся по точкам и фракталы, которые строятся по линиям - из-за чего я и написал, что о необходимости рисовать не только точки, но и линии нужно предупреждать).
То есть Вы считаете, что для решения Вашей проблемы такие детали необязательны.
Почему же Вы считаете, что мне для того, чтобы помочь Вам, нужно иметь представление о L-системе?

Могу только повториться: принципы оптимизации везде одни и те же, и в L-системе, как бы она ни была устроена, они так же не изменятся.
s-andriano вне форума Ответить с цитированием
Старый 14.03.2013, 22:57   #12
alik98
Пользователь
 
Регистрация: 28.05.2012
Сообщений: 54
По умолчанию

Все эти расчеты с отрезками замедлили программу еще больше, чем мой первоначальный вариант.
alik98 вне форума Ответить с цитированием
Старый 14.03.2013, 23:05   #13
alik98
Пользователь
 
Регистрация: 28.05.2012
Сообщений: 54
По умолчанию

Цитата:
При первом проходе Вы ничего не рисуете. Значит, в том случае, если именно рисование занимает основное время, Вы потратите его только однажды.
Я уже говорил, что, так как это L-система (суть который вы, должно быть не узнали), то вычислять придется каждый раз.

Цитата:
Вы опубликовали сообщение, не написав даже, о каком именно фрактале идет речь. А их масса самых разных (в частности, фракталы, которые строятся по точкам и фракталы, которые строятся по линиям - из-за чего я и написал, что о необходимости рисовать не только точки, но и линии нужно предупреждать).
Этот фрактал строится на основе L-системы. Я просто думал, что отвечать на мои вопросы возьмется (если вообще возьмется) отвечать человек, знающий, что такое система Линденмайера и как она строит фракталы, ведь о ней говорилось в сообщении.
alik98 вне форума Ответить с цитированием
Старый 14.03.2013, 23:10   #14
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от alik98 Посмотреть сообщение
Все эти расчеты с отрезками замедлили программу еще больше, чем мой первоначальный вариант.
Давайте сравнивать сравнимое.
Правильно ли работал первоначальный вариант?
Если "нет", то пытаться использовать его скорость работы в качестве отправной точки бессмысленно.
s-andriano вне форума Ответить с цитированием
Старый 14.03.2013, 23:17   #15
alik98
Пользователь
 
Регистрация: 28.05.2012
Сообщений: 54
По умолчанию

Под первоначальным вариантом я подразумевал описанный мною в первом сообщении: то бишь, генерировать фрактал по новой, смещая только лишь стартовую позицию. Да, он работал, хоть программа и замедляется в фатальные два раза. Метод с массивом отрезков и пересчетом их координат не дал ожидаемого ускорения и замедлил программу как минимум в 5 раз (координат ведь немало - +266000, в данном случае).

Последний раз редактировалось alik98; 14.03.2013 в 23:20.
alik98 вне форума Ответить с цитированием
Старый 14.03.2013, 23:20   #16
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от alik98 Посмотреть сообщение
Я уже говорил, что, так как это L-система (суть который вы, должно быть не узнали), то вычислять придется каждый раз.
Не верю.
Не может быть в принципе такой системы, которая заставляла бы кого бы то ни было дважды выполнять одну и ту же работу.

Зато запросто может быть ошибка в проектировании программы, приводящая к такому эффекту.
Цитата:
Этот фрактал строится на основе L-системы. Я просто думал, что отвечать на мои вопросы возьмется (если вообще возьмется) отвечать человек, знающий, что такое система Линденмайера и как она строит фракталы, ведь о ней говорилось в сообщении.
Ваш вопрос касался времени выполнения программы.
Т.е. требовалась ее оптимизация по этому критерию.
Это как раз тот вопрос, в котором я хорошо разбираюсь, из-за чего, собственно, я и ответил.

Ну а дальше - Ваш выбор:
- либо дожидаться того, кто имеет опыт работы с L-системами (и одновременно имеет опыт оптимизации программ),
- либо попытаться объяснить, в чем состоит специфика L-системы,
- разбираться со всем самостоятельно.
s-andriano вне форума Ответить с цитированием
Старый 14.03.2013, 23:22   #17
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от alik98 Посмотреть сообщение
Под первоначальным вариантом я подразумевал описанный мною в первом сообщении: то бишь, генерировать фрактал по новой, смещая только лишь стартовую позицию. Да, он работал, хоть программа и замедляется в фатальные два раза. Метод с массивом отрезков и пересчетом их координат не дал ожидаемого ускорения и замедлил программу как минимум в 5 раз (координат ведь немало - +266000, в данном случае).
А можно узнать время выполнения отдельно каждого из этапов?
s-andriano вне форума Ответить с цитированием
Старый 14.03.2013, 23:35   #18
alik98
Пользователь
 
Регистрация: 28.05.2012
Сообщений: 54
По умолчанию

Цитата:
Ваш вопрос касался времени выполнения программы.
Вопрос касался уменьшения времени выполнения программы, но это уже второстепенная задача. Главная - перебрать способы центрирования фрактала создаваемого на основе многократно-названной-мною-системы. Однако вы правы, я не самый опытный программист, почти новичок, мне потребуется любая помощь.

Цитата:
либо попытаться объяснить, в чем состоит специфика L-системы
http://habrahabr.ru/post/69989/
Если захотите, почитайте это, об L-системах первая половина статьи.

Цитата:
Не может быть в принципе такой системы, которая заставляла бы кого бы то ни было дважды выполнять одну и ту же работу.
Да, с этим я переборщил. Вариант с отрезками работает и не заставляет все заново генерировать. Но это дольше повторной генерации фрактала в данном случае. Я хотел сказать, что разделить просчет точек и остальные команды в L-системе не выйдет, как не вышло бы разделить тело человека пополам - эти части просто не будут работать правильно, синхронно (возможно, человеческое тело - не самый удачный пример). Я, по крайней мере не знаю как это сделать и сам способов не вижу.

Последний раз редактировалось alik98; 15.03.2013 в 00:08.
alik98 вне форума Ответить с цитированием
Старый 14.03.2013, 23:42   #19
alik98
Пользователь
 
Регистрация: 28.05.2012
Сообщений: 54
По умолчанию

Цитата:
А можно узнать время выполнения отдельно каждого из этапов?
Под этапами подразумевается отрисовка, генерация и т.д.? Или вас интересует время работы каждого из рассмотренных методов центрирования? В первом случае у меня не выходит подсчитать. Я откатил программу до первоначального состояния и отрисовка с генерацией теперь снова абсолютно нераздельны. Но тогда, когда они были отделены отрисовка занимала намного меньше половины, как я помню. Все время выполнения программы с данным фракталом - 0.25 секунд (без центрирования).

Последний раз редактировалось alik98; 14.03.2013 в 23:55.
alik98 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В центре экрана нарисовать квадрат и выполнить его диагональную штриховку в виде двух треугольников, расположенных еа од zzz6 Помощь студентам 1 06.07.2011 14:26
нарисовать круг по центру экрана rUs_LAN Win Api 2 01.04.2010 21:27
Попал какой то вирус adsubscribe вылетает каждые 10 минут в центре экрана реклама leonidka Операционные системы общие вопросы 8 16.07.2009 20:33