해결된 질문
작성
·
352
1
console.time("지연평가");
go(
users,
L.map((u) => u.family),
L.flatten,
L.filter((u) => u.age < 20),
L.map((u) => u.name),
take(3),
log
);
console.timeEnd("지연평가");
console.time("프로토타입");
const res = users
.map((e) => e.family)
.flat()
.filter((e) => e.age < 20)
.map((e) => e.name);
const result = [];
for (let i = 0; i < 3; i++) {
result.push(res[i]);
}
log(result);
console.timeEnd("프로토타입");
같은 동작을 하는 코드를 이터러블 / js 프로토타입 으로 코드를 작성했을 때
js 기본 프로토타입을 사용한 코드가 소요시간이 조금 더 적게 걸리던데
혹시 제가 놓치고 있는 부분이 있거나 효율부분에서는 프로토타입 사용하는게 더 나은건가요?
답변 1
3
users의 크기가 클 수록, 보조함수안에서 수행하는 일이 오래 걸릴수록 지연평가가 유리합니다. :)
논리적으로 지연평가가 유리하다는 내용이 핵심이고,
실제로 다루는 배열의 크기가 작을 수록 차이가 적고,
브라우저나 엔진의 구현에 따라서도 후자가 유리할 수 있습니다.
언어나 엔진 레벨에서 지연평가를 더욱 적극 지원할 수록 전자가 유리해질 수 있습니다.
감사합니다.