**Cards를 Object Key-Value 로 관리하는것의 효율성에 대한 질문입니다!**A FEW SECONDS AGO
안녕하세요 선생님~ 오늘 강좌 감명깊게 잘 봤어요. 아이템을 Object의 Key-Value 로 관리한다는 아이디어가 신선하게 다가왔고 앞으로 활용해 봐야겠구나 생각했습니다!
그런데 지금은 최적화에 과연 도움이 되는지는 조금 의문점이 생겼어요.
배열을 map 으로 돌리나 Object 를 Spread 하나 결국은 Iterable한 성격을 띄니 각 아이템을 순회하는 것은 결국 똑같은 것이 아닌지? 생각도 해봤고요, Object 는 Iterable 이 아니라는 것을 확인 하여, {...obj} 는 순회하는 연산을 수행하는 것이 아니고 '메모리 복사'라는 특수한 연산을 수행하여 과연 map 보다 빠를까? 등의 연역적인 가설을 세워 아래와 같은 예제를 만들어 봤습니다.
let bigArray = new Array(10000000).fill(0);
console.time('mapTime');
let copiedBigArray = bigArray.map(item => item);
console.timeEnd('mapTime');
// mapTime: 261.708ms
// *******************************************
let bigObject = {...bigArray};
console.time('objSpreadTime(Spread)');
let copiedBigObjectWithSpread = {...bigObject};
console.timeEnd('objSpreadTime(Spread)');
// objSpreadTime: 7491.412ms
// *******************************************
console.time('objSpreadTime(Assign)');
let copiedBigObjectWithAssign = Object.assign({}, bigObject);
console.timeEnd('objSpreadTime(Assign)');
// objSpreadTime(Assign): 8831.420ms
실험의 결과는요, 좀 더 빠를줄만 알았던 object의 spread 가 훨씬 더 느렸다는 것이었습니다. 그래서 결국 map 연산을 하는것이 최적화에 도움이 되는것이 아닐까? 라는 결론에 도달하였는데
제가 지금 밤이라 좀더 면밀하게 검토하지 못하고 의문점을 제기한점 양해 부탁드리며, 제가 잘못 생각 하는 부분이 혹시 있다면 어느 부분이 있는지 엘리쌤의 견해가 궁금합니다!
긴 글 읽어주셔서 감사합니다. :)