JavaScript에서 속도 테스트 개체 VS 배열 작업

데이터 모음으로 작업하려는 경우 객체와 배열 사이에 결론이 있습니다. 때로는 Array가 훌륭하게 작동하고 때로는 Object가 훌륭하게 작동합니다. 우리는 수백만 개의 데이터가 비어 있는 Array & Object에 들어올 때 이 두 가지와 그 성능을 테스트할 것입니다. 데이터를 업데이트해야 하는 횟수입니다.

작업 속도 비교를 업데이트합니다.



5M의 어레이 업데이트 속도. 데이터




// Array..
const arr = [];

for (let i = 0; i < 5000000; i++){
    arr.push({
        id: I,
        value: `${i * 84}`
    });
}

// Updating data..
console.time('ARRAY SPEED');
let id = 4999998;
const findItem = arr.find(item => item.id === id);
findItem.value = 'HACKED BY ASAD ANIK';
console.timeEnd('ARRAY SPEED');


ARRAY SPEED: 48.817ms



5M의 개체 업데이트 속도. 데이터




// Object..
const obj = {};

for (let i = 0; i < 5000000; i++){
    obj[i] = {
        id: I,
        value: `${i * 84}`
    };
}

// Updating data..
console.time('OBJECT SPEED');
let id = 4999998;
obj[id].value = 'HACKED BY RAKHIYAATUL KUBRA';
console.timeEnd('OBJECT SPEED');


OBJECT SPEED: 0.085ms



작업 속도 비교를 삭제합니다.



어레이의 삭제 속도.




// Array..
const arr = [];

for (let i = 0; i < 5000000; i++){
    arr.push({
        id: I,
        value: `${i * 84 + 77}`
    });
}

// Deleting data..
console.time('ARRAY DELETE SPEED');
let id = 4999999;
const index = arr.findIndex(item => item.id === id);
arr.splice(index, 1);
console.timeEnd('ARRAY DELETE SPEED');


ARRAY DELETE SPEED: 49.457ms



객체 삭제 속도.




// Object..
const obj = {};

for (let i = 0; i < 5000000; i++){
    obj[i] = {
        id: i,
        value: `${i * 84 + 77}`
    };
}

// Deleting data..
console.time('OBJECT DELETE SPEED');
let id = 4999999;
delete obj[id];
console.timeEnd('OBJECT DELETE SPEED');


OBJECT DELETE SPEED: 0.084ms



Vs Map, 필터 방식을 줄입니다.



Reduce는 Map 및 Filter보다 더 강력한 방법입니다. 증명을 보자.
→ 맵, 필터

const arr = [];

for (let i = 0; i < 5000000; i++){
    arr.push(i);
}

// Not Optimised operation..
console.time('MAP_FILTER');
arr.filter(item => item %2 === 0).map(item => item * 2);
console.timeEnd('MAP_FILTER');


MAP_FILTER: 153.749ms



→ 축소

const arr = [];

for (let i = 0; i < 5000000; i++){
    arr.push(i);
}

// Optimised operation..
console.time('REDUCE_WAY');
arr.reduce((acc, cur) => {
    if (cur %2 === 0){
        acc.push(cur * 2);
    }
    return acc;
}, []);
console.timeEnd('REDUCE_WAY');


REDUCE_WAY: 89.065ms



의사결정



→ 애플리케이션을 구축할 시간이므로 작업을 결정해야 합니다. 애플리케이션이 많은 트래버스를 처리하고 있습니까? ⇒ 따라서 대부분의 경우 어레이 작업으로 작업하십시오. 완전히 괜찮아요.

→ 그리고 애플리케이션이 생성, 검색, 읽기, 업데이트, 삭제와 같은 많은 CRUD 작업을 처리한다면? ⇒ 따라서 대부분의 경우 객체 작업으로 작업하십시오. 괜찮아.

좋은 웹페이지 즐겨찾기