2017-03-13 6 views
1

밑줄 메서드와 백본 메서드를 모두 사용합니다. 그 중 어떤 것이 더 훌륭하고 빠르게 수행되는지 알고 싶습니까? 나는 많은 양의 데이터를 가진 수집을 시도하고 있으며 수집의 수 또한 더 많다.언더 코어 (Underscore) 방법이나 백본 (Backbone) 방법 중 어느 것이 더 빠릅니까?

예 :

_.filter(collection, predicate); 
collection.filter(predicate); 
+3

이렇게 좋은 질문이 아닙니다. 어떤 코드가 더 빠른 지 알고 싶다면 두 개 이상의 코드를 작성하고 직접 측정하십시오. – Tomalak

+0

@ Tomalak의 평가에 동의하지 않습니다. 나는 다른 사람들이 궁금해 할 수있는 것은 매우 합리적 인 질문이라고 생각한다. – CullenJ

+1

@CullenJ 아니, 그게 어떻게 작동하는지 아니야. 유휴 * "어떤 것이 더 빠를까 궁금하다"* 동행 할 코드가없고 이유가 없다는 표시는 a) OP가 누군가에게 쓰기를 원하고 성능에 대해서는별로 신경 쓰지 않고 b) OP 이 문제에 대해 자신의 시간을 소비하지 않았다면, 그렇지 않으면 그들이 보여줄 것이고, 어떤 문맥 (라이브러리 버전, JS 런타임, 테스트 픽스쳐) 없이도 특정 구현이이 시점에서 더 빠르다는 것은 중요하지 않다. 시각. 다른 설정으로 이전 할 수도없고 한 달 후에도 사용할 수 있습니다. – Tomalak

답변

3

이는 그것에 how backbone adds _ methods이 생성자 기본적으로 제공됩니다 :

var addUnderscoreMethods = function(Class, methods, attribute) { 
    _.each(methods, function(length, method) { 
    if (_[method]) Class.prototype[method] = addMethod(length, method, attribute); 
    }); 
}; 

addMethod이 같은 함수를 반환

return function(value) { 
    return _[method](this[attribute], value); 
}; 

그래서 단순히 그냥 다른 방법입니다 넣어 동일한 메소드를 호출합니다.

순수한 성능 관점에서 보면 _ 메서드를 직접 호출하면 래퍼 함수 호출을 피함으로써 조금 더 빨라질 수 있습니다.

가독성과 유지 관리 관점에서 볼 때 수집 방법이 더 좋습니다. 성능 차이는 최신 브라우저의 합리적인 크기의 콜렉션에서는 중요하지 않습니다. 그래서 그들이 처음부터 사용할 수있는 이유입니다.