RequestAnimationFrame은 그래픽 카드 또는 드라이버 수준에서 작동하지 않습니다. 브라우저 특정 소프트웨어 개념입니다. 브라우저가 처리 파이프 라인에있는 위치에 따라 최적화 된 시간에 일부 렌더링 작업을 수행하도록 요청할 수 있으며, 대체 방법 인 setTimeout
보다 더 높은 정밀도로 호출 할 수 있습니다. .
@markE는 탭이 활성화되어 있지 않으면 일시 중지되므로 여러 탭에서 진행되는 RAF와 관련된 성능 문제는 없습니다. 사실, 비활성 탭에서 RAF 기반 애니메이션을 일시 중지하는 기능은이를 도입 한 동기 중 하나였습니다.
그러나 YouTube는 RAF를 사용하지 않습니다. 내가 아는 한 YouTube 동영상은 백그라운드 탭에서 계속 실행됩니다. 그래픽 하위 시스템은 많은 작업을 수행하지만 CPU도 관련되어 있습니다. 픽셀은 어딘가에서 가져와 그래픽 시스템에 공급해야합니다. 멀티 코어 CPU에서 새로운 프로세스는 이론적으로 충분히 활용되지 않은 코어를 사용할 수 있지만 결국 CPU 리소스는 유한합니다. 더 많은 작업을 수행하면할수록 모든 것이 느려지고 특히 브라우저 나 브라우저 탭을 실행하는 특정 스레드에 할애 할 수있는 리소스가 줄어 듭니다. 그래서 예, 당신이 그런 둔화를 보게 될지 전혀 놀라운 것이 아닙니다.
왜 당신은 이것에 놀랐습니까? 그것은 하나의 CPU를 가진 하나의 컴퓨터입니다. 한 번에 그렇게 많이 할 수 있습니다. –
마치 "내 운영 체제가 프로그램 B를 동시에 실행하면 프로그램 A가 50 % 더 느리게 실행됩니다."라고 말하는 것과 같습니다. 우리는 멀티 스레딩 CPU주기, 멀티 코어 시대에 살고 있습니다. 그래서 아니오, RAF가 한 번에 너무 많이하도록 요구하고 있다고 생각하지 않습니다. P – bigp
"멀티 스레딩 CPU주기"가 무엇을 의미하는지조차 알지 못합니다. 멀티 스레딩은 머신에 무한한 리소스가 있음을 의미합니까? 기계가 심하게로드되면 프로그램이 실제로 더 느리게 실행됩니다. –