찾다

 >  Q&A  >  본문

Vue 3의 제공/주입 성능은 얼마나 됩니까?

<p>저는 전역 상태 관리를 위해 애플리케이션 수준의 <code>provide</code>를 사용하는 프로젝트를 진행하고 있습니다. 처음에는 <code>provide</code>d 개체가 작았지만 프로젝트가 성장하면서 그 개체도 늘어났습니다. </p> <p>데이터가 필요한 곳에 이 개체를 삽입하면 애플리케이션 성능에 얼마나 많은 영향을 미칠까요? Pinia와 같은 전역 상태 관리 도구를 구현하지 않고도 필요한 곳에 데이터 "청크"를 제공하기 위해 우리가 제공하는 큰 개체를 별도의 개체로 나눌 가치가 있습니까? </p>
P粉946336138P粉946336138494일 전572

모든 응답(1)나는 대답할 것이다

  • P粉854119263

    P粉8541192632023-08-27 00:50:55

    기본적인 벤치마킹을 해봤는데 자주 사용하는 변수를 제공/주입해야 하는지, 아니면 다수의 컴포넌트에서 피니아 스토어에서 접근해야 하는지 궁금합니다.

    결과적으로는 큰 성능 차이가 없는 것으로 나타났습니다.

    첫 번째 테스트 사례는 매우 기본적입니다. 단일 bool을 제공/주입하는 것은 구성 요소의 Pinia 저장소에서 가져오고 구성 요소를 여러 번 렌더링하는 것과는 다릅니다. 50k 구성요소를 렌더링하는 데 20~24초가 걸렸으며, 제공/주입 및 Pinia도 사용했습니다. 둘 중 하나가 더 빠르거나 느리다고 말하는 일관된 차이는 없습니다.

    두 번째 테스트에서는 약 1MiB의 데이터 배열(공백 없이 JSON 인쇄로 측정됨)인 더 큰 개체를 사용했습니다. 그 차이도 크지 않습니다. 저는 50,000개의 구성 요소를 렌더링했으며 주입과 저장소 액세스를 모두 사용하는 데 19~26초 사이로 거의 같은 시간이 걸렸습니다.

    각 구성 요소는 테마 변수의 부울 값을 렌더링하므로 큰 데이터와 작은 부울 값으로 인해 렌더링 시간이 늘어나지 않습니다.

    결국 프로바이더/인젝션과 피니아 매장은 별 의미 없는 차이가 있다는 결론에 이르렀습니다. 유일한 명백한 차이점은 데이터가 클수록 성능이 덜 안정적이고 데이터가 작을수록 성능을 더 예측할 수 있다는 것입니다. 부울 값에 대한 테스트를 몇 번이나 반복하더라도 시간은 항상 20-24초 사이이고 데이터가 증가함에 따라 19초 또는 26초와 같은 일부 이상값이 발생합니다. 다시 말하지만 일관성이 없습니다. 이는 실제 CPU 사용량의 변동일 수 있으며 제공/주입 대 Pinia 저장소 사용량과는 아무 관련이 없습니다.

    vue@3.2.47 및 pinia@2.0.32를 사용하여 macOS의 Chrome v110(x86_64)에서 테스트했습니다.

    내가 사용한 테스트 코드:

    으아악 으아악 으아악

    회신하다
    0
  • 취소회신하다