2017-12-27 43 views
1

NodeJS에서 몇 백만 번 실행되는 루프가 있는데, 그 중 많은 것들이 일부 객체에서 원하지 않는 속성을 제거합니다. 그것은 어쩌면 소리 때문에,원하는 속성 만 사용하여 속성을 삭제하거나 새 개체를 만드는 것이 더 빠릅니까?

undesiredPropsArray.forEach(p => delete(obj[p])) 

또는 간단하게 테스트를 실행

var newObj = {}; 
Object.keys(obj).forEach(p => { if (!undesiredPropsObj[p]) newObj[p] = obj[p] }); 

가 간단하지 않습니다 : 나는 그것을 할 더 빨리 여부, 일반적으로 알고 궁금

원하는 속성과 원하지 않는 속성의 수는 다양합니다.

+0

를 표준이 무엇을해야 대해서는 아무것도 말하지 않는다 빠르다. 이는 구현에 따라 다르다는 것을 의미하며, 다른 모든 런타임 버전에서도이를 변경할 수 있음을 의미합니다. – zerkms

+0

Lodash에는 fn이 있고 lib는 성능 중심입니다. 아이디어를 얻으려는 출처를 조사 할 것입니다. https://lodash.com/docs/4.17.4#pick –

답변

1

잠시 동안 각각의 명령이 동일한 시간으로 실행된다고 가정하면 실행할 명령이 적은 작업이 더 빨리 실행됩니다. 즉, 유지하려는 속성 수와 비교하여 원하지 않는 속성이 적 으면 삭제 속도가 빨라집니다 (반대의 경우도 마찬가지입니다). 우리가 거대한 물건을 거대한 수의 물건에 대해 말하지 않는다면, 구원받은 시간은 과실이 될 것입니다. 내 생각 :

1

jsperf에서 자바 스크립트 코드를 벤치 마크하고 비교할 수 있습니다. 나는했고, 첫 번째 방법은 빨리 예상대로 (함께 aprox 66 %로 -이 다를 수 있음) ..

편집 : 이것은 초기화 코드는 내가 사용 : 일반적으로

var undesiredPropsArray = []; 
    var undesiredPropsObj = {}; 
    var obj = {}; 

    for (i=0;i<10000;i++) { 
    obj[i] = null; 
    if ((i%2) === 0) { 
     undesiredPropsArray.push(i); 
     undesiredPropsObj[i] = null; 
    } 
    }