inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

take

성능 차이가 정말 가시적일까요?

359

unchaptered

작성한 질문수 26

0

강의에서는 2개의 케이스를 작성해서 일반 함수 / 제네레이터 함수 에 대해서 언급을 해주시면서 화면상에는 성능이 약 1.8 배 정도 난 걸로 보았습니다.

정말 그렇게 큰 차이가 나는가 라는 생각을 해서 다음과 같은 케이스를 검증해보았습니다.

 

# 케이스

1. new Array() > push()
2. new Array(length); > array[index] = i
3.  Array.from({ length: l }, ( _, i ) => i);
4. 강의에 나온 제네레이터 함수

 

# 결과 

빠르네요!!

## 10_000 기준 (8.87% 빠름)

## 100_000 기준  (0.2396% 느림)

## 1_000_000 기준 (8.8299..% 빠름)

## 10_000_000 기준 (11.42% 빠름)




## 코드

const range1 = l => {
    let i = -1;
    let res = [];
    while (++i < l) {
        res.push(i);
    }
    return res;
};

const range2 = l => {
    let i = -1;
    let res = new Array(l);
    while (++i < l) {
        res[i - 1] = i;
    }
    return res;
};

const range3 = l => Array.from({ length: l }, (_, i) => ++i);

const L = {};
L.range = function *(l) {
    let i = -1;
    while (++i < l) {
        yield i;
    }
}

function test(name, time, f) {
    console.time(name);
    while(time--) f();
    console.timeEnd(name);
}

test('push', 10, () => customReduce(add, range1(1_000_000)));
test('index', 10, () => customReduce(add, range2(1_000_000)));
test('Array.from', 10, () => customReduce(add, range3(1_000_000)));
test('Generator', 10, () => customReduce(add, L.range(1_000_000)));

javascript 함수형-프로그래밍

답변 2

1

unchaptered

관련해서 강사님께서 이미 답변하신 내용이 존재해서 링크업만 해둡니다!

순회할 값이 적은 경우에는 왜 먼저 실행한 게 오래 걸리나요? - 인프런 | 질문 & 답변 (inflearn.com)

0

MDU 유인동

감사해요!

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

1

121

1

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

0

98

2

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

0

69

1

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

0

131

1

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

1

486

1

pipe함수

1

538

1

Identity 함수

0

453

1

함수형 프로그래밍이란

0

840

1

reduce 예제 코드 제안!

0

405

1

fxts를 배워보려고 합니다.

1

540

1

flatMap 관련 질문드립니다~

1

451

1

다용성이 높은 L.flatMap

0

359

1

변수에 재 할당 금지~

0

543

1

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

0

486

2

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

1

467

1

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

0

468

2

reduce에 L.range를 사용할 때

0

529

2

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

3

747

2

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

2

799

3

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

1

505

1

안녕하세요 강사님!

0

385

2

fxts에 go가 없는 이유?

0

847

1

비동기 관련 질문입니다!

0

465

1

질문 있습니다.

0

521

1