• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

소요시간에 관해서 질문드립니다

23.07.19 17:03 작성 조회수 248

0

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

답변을 작성해보세요.

2

users의 크기가 클 수록, 보조함수안에서 수행하는 일이 오래 걸릴수록 지연평가가 유리합니다. :)

논리적으로 지연평가가 유리하다는 내용이 핵심이고,
실제로 다루는 배열의 크기가 작을 수록 차이가 적고,
브라우저나 엔진의 구현에 따라서도 후자가 유리할 수 있습니다.

언어나 엔진 레벨에서 지연평가를 더욱 적극 지원할 수록 전자가 유리해질 수 있습니다.

감사합니다.