inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

함수형 프로그래밍과 JavaScript ES6+

range와 느긋한 L.range 테스트

순회할 값이 적은 경우에는 왜 먼저 실행한 게 오래 걸리나요?

257

Dev

작성한 질문수 4

0

10번만 돌리니까 먼저 돌린게 오래 걸리고,

1000000번 정도 돌렸을 때는, 순서에 상관없이 L.range가 효율이 좋게 나오네요.

const test = (f, name) => {
    console.time(name);
    f();
    console.timeEnd(name);
}

const add = (acc, i) => i + acc;

const times = [10, 1000000];
/** L.range 먼저 실행**/

for (const t of times) {
    test(() => reduce(add, L.range(t)), `L.range-${t}`);
    test(() => reduce(add, range(t)), `  range-${t}`);
}

log("---------")
/** L.range 나중에 실행**/

for (const t of times) {
    test(() => reduce(add, range(t)), `  range-${t}`);
    test(() => reduce(add, L.range(t)), `L.range-${t}`);
}

L.range-10: 0.189ms

  range-10: 0.051ms

L.range-1000000: 36.246ms

  range-1000000: 55.928ms

---------

  range-10: 2.477ms

L.range-10: 0.189ms

  range-1000000: 38.996ms

L.range-1000000: 27.94ms

javascript 함수형-프로그래밍

답변 1

2

MDU 유인동

안녕하세요 :)

브라우저의 상태에 따른 문제일거에요. 

너무 짧은 시간에 대한 테스트는 의미가 크진 않습니다. 

배열을 만드는 경우와 만들지 않는 경우의 로직적인 효율에 포커싱해서 바라봐주시면 좋습니다.

배열의 사이즈가 클 수록 브라우저의 상태와 연관 없이 배열을 만들지 않는 지연방식이 유리하게 됩니다.

그리고 브라우저나 자바스크립트 엔진이 아직은 제너레이터를 더 최적화해서 구현하지 못한 것으로 예상하고 있습니다. 잘 구현한다면 어떤 경우에도 L.range가 더 빠를 것 입니다. 

감사합니다 :)

프론트엔드 실무에서 어떤때에 쓰이는지 궁금합니다

1

111

1

함수형 프로그래밍 심화 강의 자료 추천

0

72

2

함수형 자바스크립트 프로그래밍 책

0

52

1

filter가 아무것도 걸러내지 못하는 경우

0

112

1

take 함수의 성능적면에서의 이점

1

463

1

pipe함수

1

530

1

Identity 함수

0

450

1

함수형 프로그래밍이란

0

831

1

reduce 예제 코드 제안!

0

403

1

fxts를 배워보려고 합니다.

1

537

1

flatMap 관련 질문드립니다~

1

444

1

다용성이 높은 L.flatMap

0

357

1

변수에 재 할당 금지~

0

540

1

DevTools라고 옆에 결과 확인하는거 어떻게 하나요?

0

482

2

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

1

457

1

join에 대한 내용이 궁금증이 해결되지 않아서 질문드립니다!

0

465

2

reduce에 L.range를 사용할 때

0

526

2

[이해내용 공유] Lazy 에서 C.reduce가 병렬 효과를 내는 이유

3

738

2

제가 이해한 C.Reduce와 Reduce의 동작 차이 정리

2

787

3

go, pipe 함수 관련하여 질문 드립니다.

1

498

1

안녕하세요 강사님!

0

378

2

fxts에 go가 없는 이유?

0

837

1

비동기 관련 질문입니다!

0

457

1

질문 있습니다.

0

514

1