[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Оптимизация (game maker)
Оптимизация
АДМИНДата: Среда, 2012/Авг/15, 13:43 | Сообщение # 1
Группа: Администрация
Сообщений: 62
Награды: 6
Репутация: 9
Статус: 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 невероятно медленный. Допустим, у нас есть два куска кода:


Код:






 


a = b;


 




и


Код:






 


script0();


 




 


script0 такого содержания:


Код:






 


a = b;


 




 


Первый код, повторенный 100 раз выполнялся 0.044 миллисекунды, второй (скрипт) -  0.341 миллисекунды (то есть, примерно в семь раз дольше!).


Первый код, повторенный 1000000 раз выполнялся 5401 миллисекунду, второй (скрипт) -  9864 миллисекунды.


 


Очевидно, что вызов скрипта занимает довольно много времени. На деле, при большом количестве использования скриптов в постоянно повторяющихся событиях (как step и draw) - fps значительно падает.


 


 




 





Создатель сайта!!!!
 
Форум » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Оптимизация (game maker)
Страница 1 из 11
Поиск: