|
04.02.2011, 16:00
|
#1
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
If .. EndIf vs Логические выражения
Собственно сабж. Что будет выполняться быстрее? К примеру:
If Speed < MaxSpeed And KeyDown( KEY_W ) Then Speed = Speed + 0.1 ElseIf Speed > -MaxSpeed And KeyDown( KEY_S ) Then Speed = Speed - 0.1 EndIf
Speed = Speed + 0.1 * ( Speed < MaxSpeed ) * KeyDown( KEY_W )- 0.1 * ( Speed > -MaxSpeed ) * KeyDown( KEY_S )
Оба кода делают одно и тоже. Что предпочтительнее по скорости?
__________________
|
(Offline)
|
|
04.02.2011, 16:21
|
#2
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: If .. EndIf vs Логические выражения
Во-первых, premature optimization is the root of all evil (с) Donald Knuth.
Во-вторых, это экономия на спичках.
В-третьих, операции с числами с плавающей запятой затратнее.
__________________
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо .Squid за это полезное сообщение:
|
|
04.02.2011, 16:27
|
#3
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: If .. EndIf vs Логические выражения
Вопрос был о скорости. Не об экономии. И не о "преждевременной оптимизации". Кароч быстрее или нет?
__________________
|
(Offline)
|
|
04.02.2011, 17:04
|
#4
|
Разработчик
Регистрация: 27.06.2009
Адрес: Рязань-Москва
Сообщений: 471
Написано 401 полезных сообщений (для 1,072 пользователей)
|
Ответ: If .. EndIf vs Логические выражения
Выполни их по миллиону раз и и посчитай время командой millisecs()
|
(Offline)
|
|
04.02.2011, 17:14
|
#5
|
Знающий
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений (для 166 пользователей)
|
Ответ: If .. EndIf vs Логические выражения
Логические операции выполняются быстрее умножения, вероятно первый пример будет быстрее.
|
(Offline)
|
|
05.02.2011, 21:04
|
#6
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Ответ: If .. EndIf vs Логические выражения
думаю стоит сначало проверять нажатие кнопок а потом во вложеном условии проверять скорости !!
|
(Offline)
|
|
05.02.2011, 21:07
|
#7
|
Легенда
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений (для 5,072 пользователей)
|
Ответ: If .. EndIf vs Логические выражения
Я думаю в таких условиях достаточно просто не мудрить. Это не партиклы чтобы париться оптимизацией.
__________________
Ибо как сказал Бгдн:
|
(Offline)
|
|
05.02.2011, 23:29
|
#8
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: If .. EndIf vs Логические выражения
Вот после таких слов мы жалуемся на то, что современные игры тормозят
__________________
|
(Offline)
|
|
05.02.2011, 23:47
|
#9
|
Легенда
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений (для 5,072 пользователей)
|
Ответ: If .. EndIf vs Логические выражения
А из-за подобных высказываний глючат. Здравый смысл где? Это одна строго определенная функция.
__________________
Ибо как сказал Бгдн:
|
(Offline)
|
|
05.02.2011, 23:56
|
#10
|
Мастер
Регистрация: 26.10.2009
Сообщений: 1,194
Написано 615 полезных сообщений (для 2,209 пользователей)
|
Ответ: If .. EndIf vs Логические выражения
При современных мощностях компьютеров подобные вещи несущественны если они не вызываются по миллиону раз за кадр.
Я вообще так команды на скорость тестировал:
n=10000
;замеряем время самого цикла
time1=MilliSecs()
For i=1 To n
Next
time2=MilliSecs()
looptime=time2-time1
time1=MilliSecs()
For i=1 To n
;Тестируемая команда/программа
Next
time2=MilliSecs()
Print time2-time1-looptime
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
06.02.2011, 00:19
|
#11
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: If .. EndIf vs Логические выражения
Спасибо. Потестю на досуге
__________________
|
(Offline)
|
|
06.02.2011, 02:31
|
#12
|
Мастер
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений (для 504 пользователей)
|
Ответ: If .. EndIf vs Логические выражения
В логическом смысле первый пример лучше.
Так как во втором - в любом случае необходимо вычислять по ВСЕМ параметрам.
|
(Offline)
|
|
06.02.2011, 23:38
|
#13
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,358
Написано 2,472 полезных сообщений (для 6,854 пользователей)
|
Ответ: If .. EndIf vs Логические выражения
Копейки считаете, уважаемые.
Это же тупой блок программы и его ускорять нет смысла.
Как не крутись всё сожрёт филлрейт.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:15.
|