|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.06.2010, 23:19 | #1 |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
Оптимизация If + Or
Требуется помощь в оптимизации и создании функции перемещения:
Код:
Код:
Код:
Код:
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
08.06.2010, 23:33 | #2 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
1. Проверка либо if либо case, третьего не дано.
2. Если ты хочешь побитово слаживать флаги, то оператор или + или or. p.s. Высчитай заранее значения для диагональных направлений, забей их в константы и используй проверку case Direct of Если сделать Direct перечисляемым типом, то новые версии IDE Дельфи даже за тебя будут значения подставлять (правда не всегда срабатывает, но бывает =)). Case предпочтительнее с точки зрения оптимизации, т.к. проверка всего одна производится, в отличии от серии if операторов.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог Последний раз редактировалось mutabor; 08.06.2010 в 23:42. |
08.06.2010, 23:34 | #3 | |
Software Developer
Старожил
Регистрация: 19.12.2008
Сообщений: 2,070
|
Насчет
Цитата:
EDIT: ой, mutabor опередил...
Будь проще и люди к тебе потянутся
|
|
08.06.2010, 23:36 | #4 |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
А Case адекватно поддерживает Or?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
08.06.2010, 23:46 | #5 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Нет, нужны константы, я поэтому и говорю, определи их заранее, их не так много, четыре всего. Хотя если слаживать константы, думаю можно, компилятор посчитает сразу, главное - не использовать переменные.
Что касается ControlClick, то тут есть простор для оптимизации. Т.к. у тебя побитово слаживаются, то есть возможность добавлять по ходу флаги, в зависимости от условий, т.е. по условиям если xs больше x то добавляем один флаг, если ys > y то другой плюсуем (просьба не понимать буквально, я концепцию хочу донести просто), таким образом можно свести к нескольким выражениям, но читаемость кода пропадет, я лишний раз бы подумал делать ли так. Т.е. по этому алгоритму в коде будет всего один вызов функции MoveP, а перед ним несколько выражений с рассчетами флагов, полученное значение и передадим в функцию.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог Последний раз редактировалось mutabor; 09.06.2010 в 00:00. |
08.06.2010, 23:50 | #6 | |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
Спасибо. Так и поступим...
Цитата:
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ Последний раз редактировалось Alex Cones; 09.06.2010 в 00:01. |
|
09.06.2010, 01:42 | #7 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
уже не очень надо(пока у нас форум барахлил), но тем не менее выложу на будущее:
Цитата:
насчет case некоторые правила оптимизации в нем(тут все про беззнаковое сравнение...то есть когда нет отрицательных значений): 1)не стоит сравнивать с нулем(если у вас без знаковое сравнение естественно), лучше использовать else 2)выставлять все по возрастанию. на примере Алекса это будет Код:
вот так самое быстрое поидее цифры можно заменить на константы которые в комменте({}) (есть у меня еще идея, но это на асме надо писать, и это извращение уже...и я не уверен что оно быстрее(знаю точно что в коде скорее всего больше выйдет даже) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Многокритериальная оптимизация | derzkaya_88 | Помощь студентам | 0 | 08.06.2010 02:44 |
Оптимизация | Viper1287 | Операционные системы общие вопросы | 7 | 13.09.2009 15:33 |
Оптимизация | Flangini | Microsoft Office Excel | 5 | 11.06.2009 11:48 |
Оптимизация кода | [Smarik] | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 9 | 20.08.2008 15:00 |
Оптимизация | Terran | Общие вопросы Delphi | 3 | 03.05.2008 19:03 |