모바일 장치에서 차트를 표시하기 위해 빠른 차트 라이브러리를 찾으려고했기 때문에 성능이 중요했습니다. 또한 상업적으로 사용할 수있는 라이선스가 있어야했습니다. 나는 비교했다 :
- c3 : d3 기반이므로 SVG를 사용합니다.
- 캔버스를 사용하는 chart.js
차트는 네이티브 앱 내의 WebView 구성 요소 내에로드되며 모든 데이터 (JS 라이브러리 포함)는 로컬이므로 http 요청으로 인해 느려지지 않습니다. 성능을 더욱 극대화하기 위해 모든 것을 하나의 단일 파일에 추가로 넣었습니다.
약 500 개의 데이터 포인트와 함께 4 개의 차트 (선, 막대, 원형, 선 / 막대 콤보)를로드했습니다.
내 시간 측정은 html 페이지의 실제 로딩을 배제했습니다. 렌더링이 끝날 때까지 차트 라이브러리 코드를 사용하기 시작한 순간부터 측정했습니다. 모든 차트 애니메이션이 꺼졌습니다.
C3는 최신 Android 및 IPhone 장치에서 약 1500-1800ms가 걸렸습니다. iPhone은 Android보다 약 100ms 더 나은 성능을 보였습니다.
Chart.js는 약 400-800ms가 걸렸습니다. Android는 iPhone보다 약 300ms 더 나은 성능을 보였습니다.
당연히 SVG가 더 느립니다. 사용 사례에 따라 너무 느릴 수 있습니다.
데스크톱 컴퓨터에서 c3의 렌더링은 약 150-200ms이고 charts.js는 약 80-100ms였습니다. Android 및 iPhone 에뮬레이터에서 동일한 테스트를 실행하면 데스크톱에서와 동일한 결과가 나타납니다. 따라서 모바일 장치의 속도 저하는 하드웨어 / 처리 제한 때문입니다.
도움이되는 희망