АДМИН | Дата: Среда, 2012/Авг/15, 13:43 | Сообщение # 1 |
Группа: Администрация
Сообщений: 62
Статус: Offline
| 2.5.1. Что быстрее выполняется, sqrt(sqr(x2-x1)+sqr(y2-y1)) или point_distance(x1, y1, x2, y2)? Ответ: Встроенные функции GM выполняются быстрее самописных. point_distance будет работать быстрее. | 2.5.2. Что быстрее выполняется, функции lengthdir_x(len, dir) и lengthdir_y(len, dir), или cos(degtorad(dir))*len и -sin(degtorad(dir))*len? Ответ: Как и в случае с point_distance, lengthdir_x и lengthdir_y выполнятся быстрее. | 2.5.3. Что выполняется быстрее, стандартные проверки GM в объекте (на подобии add event -> Keyboard -> <Left>), или собственные проверки в step event (вроде keyboard_check)? Ответ: Стандартные события GM выполняются немного быстрее проверок в шаге. Вероятно, из-за того, что интерпретация кода, каким бы простым он ни был, занимает довольно много времени. То есть, использование стандартных GM событий покажет большую производительность, чем многочисленные собственные проверки в step event. Однако, разница в скорости выполнения не столь велика, чтобы злоупотреблять этим. P.S: я лично, например, чаще всего вручную пишу большинство проверок в step event объекта. | 2.5.4. Если одно из выражений в условии ложно, будет ли проверяться остальная часть условия? Ответ: В отличии от большинства языков программирования, в GML проверяется всё условие, вне зависимости, является ли одно из выражений ложным. То есть, условие написанное так: Код: if is_picture_grayscale(temp) { if is_picture_fractal(temp) { // ... } } | Будет выполнятся быстрее условия, записанного так: Код: if is_picture_grayscale(temp) and is_pisture_fractal(temp) { // ... } | (названия скриптов взяты наобум) | 2.5.5. Почему не стоит выносить действия в событиях step/draw в скрипты? Ответ: Механизм вызова скриптов в GM невероятно медленный. Допустим, у нас есть два куска кода: Код: и Код: script0 такого содержания: Код: Первый код, повторенный 100 раз выполнялся 0.044 миллисекунды, второй (скрипт) - 0.341 миллисекунды (то есть, примерно в семь раз дольше!). Первый код, повторенный 1000000 раз выполнялся 5401 миллисекунду, второй (скрипт) - 9864 миллисекунды. Очевидно, что вызов скрипта занимает довольно много времени. На деле, при большом количестве использования скриптов в постоянно повторяющихся событиях (как step и draw) - fps значительно падает. |
|
Создатель сайта!!!!
|
|
| |