Показать сообщение отдельно
Старый 18.01.2014, 21:39   #5
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: [js] Vec2 (двумерный вектор)

Коментарии излишни...
(больше - лучше)
http://jsperf.com/glmatrix-vec2-vs-vec2


Даже без кеша, выийгрывает почти вдвое, с кешем, выйгрывает в 11+ раз.
Я уже не говорю о разнице того как код выглядит...

glMatrix:
Camera_g.prototype.pick = function(point) {
    
point vec2.clone(point);
    
vec2.sub(pointpointthis.middle);
    
    
// there is no rotate vector methods in glMatrix vec2,
    // alternative would be to use matrix for such operation,
    // but that would be overkill, and would reduce performance even more
    
var rotVec vec2.clone(this.rotation);
    
vec2.normalize(rotVecrotVec);
    var 
point[0] * rotVec[0] - point[1] * rotVec[1];
    
point[1] = point[1] * rotVec[0] + point[0] * rotVec[1];
    
point[0] = t;

    
vec2.div(pointpointvec2.fromValues(this.zoomthis.zoom));

    
point[1] *= -1;

    
vec2.add(pointpointthis.position);

    return 
point;
}; 
Моё решение:
Camera.prototype.pick = function(point) {
    return 
point.clone()
        .
sub(this.middle)
        .
rot(this.rotation)
        .
divS(this.zoom)
        .
mulXY(1, -1)
        .
add(this.position)
}; 
Далее, я использую уже библиотеку не в первом проекте, следственно она доказала свою стабильность и удобство на самом деле реально выше в разы.

Честно сказать это было и до тестов очевидно, если ты заглядывал в то как glMatrix работает и в моё решение, а не задавал бы подобных вопросов.

И ещё факт того что я написал данную либу - позволило мне изучить как на самом деле работает математика каждой функции при работе с 2D векторами, и я считаю это огромный бенефит.
Миниатюры
Нажмите на изображение для увеличения
Название: bench.png
Просмотров: 1449
Размер:	12.1 Кб
ID:	20022  

Последний раз редактировалось moka, 18.01.2014 в 23:56.
(Offline)
 
Ответить с цитированием
Эти 5 пользователя(ей) сказали Спасибо moka за это полезное сообщение:
den (21.01.2014), Harter (18.01.2014), Mr_F_ (18.01.2014), pax (21.01.2014), Жека (28.01.2014)