hitTest vs ...

Проскакивал тут на форуме у Мочи вопросик. Как быстрее определять столкновения/пересечения объектов, через hitTest или через расстояние. И я решил провести небольшой тест, результаты которого под катом.


Собственно сами тесты:

Test 1:

if(m1.hitTest(m2._x,m2._y,true)){
var temp = true;
}

Test 2:

var dx = m1._x - m2._x;
var dy = m1._y - m2._y;
if(dx * dx + dy * dy < rad * rad){
var temp = true;
}

Test 3:

var dx = m1._x - m2._x;
var dy = m1._y - m2._y;
if(Math.sqrt(dx * dx + dy * dy) < rad){
var temp = true;
}
 И результаты их работы: 

Test 1 = 2285 ms

Test 2 = 2286 ms

Test 3 = 2570 ms

Время замерено для 500 000 итераций каждого теста. Замерялось многократно и потом усреднялось. Использовался АС2.

Результат меня удивил. А именно удивила скорость hitTest-а, почему то, я считал что он окажется самым медленным, но нет. Да и разница во времени оказалась не такой уж существенной, чтобы отдавать предпочтение какому либо из способов, лучше не заморачиваться и использовать то что удобней в каждом конкретном случае.


 
Главное меню