setInterval은 CPU를 많이 사용합니까?
나는 그 세트장을 어디서 읽었다.간격은 CPU를 많이 사용합니다.setInterval을 사용하는 스크립트를 생성하여 CPU 사용률을 모니터링했지만 변경을 알아차리지 못했습니다.제가 놓친 게 있는지 알고 싶어요.
코드의 역할은 URL(# 이후의 내용)의 해시에 대한 변경을 100밀리초마다 체크하고 변경되었을 경우 AJAX를 사용하여 페이지를 로드합니다.변경되지 않으면 아무 일도 일어나지 않습니다.CPU에 문제가 있습니까?
는 그렇게 하지 않는다.setInterval본질적으로 퍼포먼스에 큰 문제가 생깁니다.그 평판은 CPU의 파워가 떨어졌던 더 이른 시대에서 나온 것이 아닐까 생각합니다.
그러나 성능을 향상시킬 수 있는 방법은 여러 가지가 있으며, 이를 수행하는 것이 현명할 수 있습니다.
- 를 「」에 건네주다.
setInterval「」를 참조해당됩니다. - 가능한 한 간격을 적게 설정합니다.
- 간격은 가능한 길게 한다.
- 가능한 한 짧고 간단하게 매번 코드를 실행합니다.
섣불리 최적화하지 마세요.문제가 없을 때 자신의 삶을 힘들게 하지 마세요.
이런 딱한 할 수 있는 게 , 하다, 하다, 하다, 하다, 하다, 하다, , 하다, 하다.onhashchange이벤트를 지원하는 브라우저에서는 타임아웃이 아닌 이벤트입니다.
나는 오히려 정반대라고 말하고 싶다.「」를 사용합니다.setTimeout ★★★★★★★★★★★★★★★★★」setInterval를 사용하면 브라우저의 CPU 사용량을 줄일 수 있습니다.를 들어, 「」를 하면,setTimeout를 for ★★★★★★★★★★★★★★★★★」while루프는 CPU 사용률을 낮출 뿐만 아니라 브라우저가 UI 큐를 더 자주 업데이트할 수 있도록 보장합니다.따라서 프로세스를 장시간 실행해도 사용자 환경이 동결되거나 잠기는 일은 없습니다.
'아예'를 사용합니다.setInterval쇼에 .20회의 동시 실행 간격과 다소 힘든 작업이 쇼에 영향을 미칩니다.★★★★★★★★★★★★★★★★★★▼가 않는 수 setInterval.
..그런데 해시를 그렇게 확인할 필요는 없어요.여기에는 다음과 같은 이벤트가 있습니다.
onhashchange
해시에 변화가 있을 때 발생합니다.
window.addEventListener('hashchange', function(e) {
console.log('hash changed, yay!');
}, false);
아요 no요 。setInterval그 자체로는 CPU 부하가 높지 않습니다.매우 짧은 사이클로 많은 인터벌이 실행되고 있는 경우(또는 상당히 긴 인터벌로 매우 복잡한 조작이 실행되고 있는 경우), 인터벌의 정확한 동작과 빈도에 따라 CPU 부하가 높아지기 쉽습니다.
100밀리초 간격으로 URL을 체크하는 데 문제는 없을 것 같습니다만, 개인적으로는 250밀리초로 늘리고 싶습니다만,일반적인 사용자에게는 이 두 가지 차이점이 눈에 띄지 않을 것으로 예상되기 때문에, 그리고 특히 대부분의 경우 조작이 불가능할 것으로 예상되는 경우 가장 긴 타임아웃 간격을 사용하려고 하기 때문입니다.
"CPU 집약적"이라는 용어로 마케팅을 진행하고 있습니다.즉, 「대안보다 CPU의 부하가 높다」라고 하는 것입니다."게임이나 압축 알고리즘처럼 CPU의 파워를 많이 사용한다"와 같이 "CPU 집약적"이 아닙니다.
설명:
브라우저는 제어가 완료되면 기본 운영 체제 및 하드웨어로부터의 인터럽트에 의존하여 제어를 수신하고 JavaScript 콜백을 발행합니다.이러한 인터럽트간의 지속시간이 길면 하드웨어가 저전력 상태가 되어 소비전력이 큰폭으로 감소합니다.디폴트에서는, Microsoft Windows operating system 및 인텔 베이스의 프로세서는, 이러한 인터럽트에 15.6 밀리초(64 인터럽트/초)의 해상도를 사용합니다.이것에 의해, 인텔 베이스의 프로세서는 최저 전력 상태로 이행할 수 있습니다.이러한 이유로 웹 개발자는 Internet Explorer 및 Mozilla Firefox의 이전 버전을 포함한 HTML4 브라우저를 사용할 때 setTimeout(0)을 사용할 때 초당 64개의 콜백만 달성할 수 있었습니다.
지난 2년간 브라우저는 전력 절약형 Windows 시스템 설정을 변경하고 하드웨어가 저전력 상태가 되지 않도록 함으로써 JavaScript 개발자가 setTimeout 및 setInterval API를 통해 수신할 수 있는 초당 콜백 수를 늘리려고 시도했습니다.HTML5 사양은 초당 250콜백을 권장하는 수준까지 도달했습니다.이 고주파수는 소비전력을 40% 증가시켜 배터리 지속시간, 운용비용 및 환경에 영향을 줄 수 있습니다.또, 이 어프로치에서는, CPU 의 효율 향상과 스케줄링의 향상이라고 하는 핵심의 퍼포먼스 문제에 대처할 수 없습니다.
http://ie.microsoft.com/testdrive/Performance/setImmediateSorting/Default.html 에서
당신의 경우 문제 없습니다.그러나 캔버스에서 큰 애니메이션을 하거나 webgl을 사용하여 작업하는 경우에는 CPU에 문제가 있으므로 request Animation Frame을 사용할 수 있습니다.
이 링크 requestAnimationFrame에 대하여
function time > interval time이 불량합니다.CPU의 딸꾹질이 느린지 느린지 알 수 없으며 pc가 정지할 때까지 진행 중인 기능 위에 쌓입니다.setimeout을 사용하거나 setimeout 내의 콜백을 사용하여 process.nextick을 사용하는 것이 좋습니다.
언급URL : https://stackoverflow.com/questions/6650134/is-setinterval-cpu-intensive
'programing' 카테고리의 다른 글
| 중복된 Mongo ObjectId가 두 개의 다른 컬렉션에서 생성되었을 가능성이 있습니까? (0) | 2023.03.16 |
|---|---|
| 외부에서 웹 패킹된 코드를 호출합니다(HTML 스크립트 태그). (0) | 2023.03.16 |
| 리액트 네이티브 플렉스 박스 포함 전폭 버튼 (0) | 2023.03.16 |
| JsonNode 개체를 맵으로 변환 (0) | 2023.03.16 |
| 형식 스크립트의 svg 파일을 가져올 수 없습니다. (0) | 2023.03.16 |