ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ETC] Promise.all로 성능 개선하기
    ETC 2022. 11. 10. 16:30

    기존 로직

    const a = await updateA();
    const b = await updateB();
    const c = await updateC();
    
    return {
      a,
      b,
      c
    }

    updateA, updateB, updateC 로직이 끝난 후 return문에서 값을 반환해야 하기 때문에 3개의 로직은 동기적으로 처리되어 있다.

     

    여기서 놓친 포인트가 있었는데 3개의 로직이 다 끝난 후에 return문을 거쳐야 하는 것은 맞지만 3개의 로직이 동시에 처리될 필요는 없었다.

     

    그렇기 때문에 아래와 같이 개선할 수 있었다.

     

     

    개선된 로직

    const [a, b, c] = await Promise.all([
      updateA(),
      updateB(),
      updateC(),
    ]);
    
    return {
      a,
      b,
      c
    }

    위에서 말했듯이 3개의 로직이 다 끝난 후에 return문을 거쳐야 하는 것은 맞지만 3개의 로직이 동시에 처리될 필요는 없다. 따라서 로직들을 Promise.all로 감싸 3개의 로직은 비동기적으로 실행되고, 전체 로직은 동기적으로 처리되게 개선하였다.

     

    이 개선으로 3배에 가깝게 로직이 소요되는 시간을 줄일 수 있었다.

     

     

     

     

    'ETC' 카테고리의 다른 글

    [ETC] API url에 /api/v1를 붙이는 이유  (0) 2022.12.03
    [ETC] CDN(콘텐츠 전송 네트워크)  (0) 2022.11.15
    [ETC] Webpack 이란?  (0) 2022.07.17
    [ETC] npm, yarn의 차이는?  (0) 2022.07.17
    [ETC] ESLint, Prettier란?  (0) 2022.07.17

    댓글