프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기

하드웨어는 때로는 소프트웨어 개발자들에게 상당히 귀찮은 기술입니다만 컴퓨팅 월드에서 빠르다는 것은 그 무엇보다 우선되어지는 미덕이기도 합니다. 이는 사용자에게 좋은 UX와 성능을 제공하기 위해 반드시 이해하여야 하는 항목 중의 하나입니다.

CPU와 GPU 사이에 존재하는 이슈들

우선, GPU가 할 일을 지시하고 관리하기 위한 일은 CPU 상의 코드로 부터 시작된다는 사실은 꼭 기억해 두시기 바랍니다.

이슈1. GPU와 CPU는 메모리를 전혀 다른 공간에서 다룬다.

메모리를 전혀 다른 공간에서 다룬다는 말은 GPU가 어떤 데이터를 처리하기 위해서 메인 메모리로 부터 비디오 메모리로 데이터를 전달하는 과정이 필요하다는 뜻입니다. 하지만 아쉽게도 물리적으로 완전히 분리되어 있는 메모리 간에 데이터를 전달하는 것은 성능 상의 손실이 발생합니다.

이슈2. 메모리는 한계가 있다.

모든 데이터를 전송하려고 해도 이를 담을 공간이 충분하지 않다면 당장 필요하지 않은 데이터는 버리고 현재 시점에서 필요한 것을 적재해 주어야 합니다.

이슈3. 데이터는 자주 변경된다.

즉, 이미지 A가 GPU에 적재되어 존재한다고 해도 만약 우리가 이 이미지를 아주 약간이라도 변경하여 A2로 사용할 필요가 있다면 이 시점에서 A는 무의미한 데이터가 되어버리고 새로 전송해야 할 것입니다.

성능 최적화를 위한 첫걸음

GPU가 잘 하는 일

GPU는 수신된 데이터로 무언가를 그리는데 적합