2012-10-30 5 views
0

JavaScript에서는 배열이있는 객체와 해당 배열의 슬라이스와 다른 배열의 연결을 가져 오는 메소드가 있습니다.함수를 여러 번 실행 한 결과가 캐시됩니까?

동일한 함수에서 동일한 함수를 여러 번 실행하여 동일한 값을 반환하면 결과가 CPU 캐시에 캐시되므로 첫 번째 실행 후 성능이 빨라 집니까?

+0

문제의 코드에 대한 설명이나 예를 조금 더 제공해야 할 수도 있습니다. 그러나 약간 짧은 답변은 코드를 실행하는 자바 스크립트 파서에만 국한된 구현이라는 것입니다. 짧은 대답은 '아니오'입니다. –

+0

'프로세서 캐시 '가 너무 낮아 검사 할 수 없습니다. 나는 당신이 결코 알지 못한다고 말하고 싶다 *. JS Parser의 명령어가 명령어 캐시에 위치 할 수도 있고 수행하지 못할 수도있는 캐시에서 많은 부분이 실행될 수 있습니다. 그것은 의지가있는 것이 아닙니다. –

답변

1

물론 유일한 대답은 여기에 있습니다. 함수의 목적은 매개 변수를 가져 와서 값을 반환하기 때문입니다. 모든 매개 변수는 함수를 호출 할 때마다 다를 수 있으며 함수가 동일하거나 결과가 다를 수 있습니다. 함수를 호출하고 이벤트가 반환 될 때마다 이벤트가 발생합니다. 파서에 의한 결과 캐싱은 버그가 많은 아이디어 일 것입니다.

건배

1

을 나는이 질문에 대한 일반적인 대답은 NO 것 같다! JavaScript로 제어 할 수있는 JavaScript 또는 CPU 캐싱에는 캐싱이 없습니다. 당신이 무언가를 캐싱/성능을 향상해야한다면, 나는 스스로 프로그래밍해야 할 것입니다. 어쩌면 http://jsperf.com/cachingjq

+1

프로세서는 JS 파서가 생성 한 명령어를 캐시 할 수 있습니다. 어떻게 그렇게 확신하지 못하니? CPU 캐시는 사용자가 제어 할 수 없습니다. –

+0

그게 무슨 뜻이야; JavaScript 코드로 제어 할 수있는 것은 없습니다. (내가 아는 한). 물론 다른 Javascript 엔진이나 CPU가 특정 작업을 수행 할 수는 있지만 말할 필요도 없습니다. 이렇게 코드를 작성하면 CPU 캐싱을 활용합니다. – Tys

1

:

이 작은 예를 참조하십시오.

여기에는 상당히 많은 캐시 수준이 있습니다. 귀하의 프로세서는 하나 이상의 캐시를 가지고 있습니다. 근본적으로, 그러나, 당신은 간단히 그것들에 관해 많이 말할 수 없습니다. 그것들은 다른 크기를 가질 수도 있고, 평균적으로 다른 일을하는 것과 기능이 얼마나 오래 영향을 미칠지와 같은 것들을 가질 수 있습니다. Javascript에서는 함수 호출이라고 부르는 레벨에서는 작동하지 않지만 훨씬 낮은 레벨에서는 작동하지 않습니다. 그러나 때로는 시간이 함수의 실행 시간을 면도 할 수 있음을 의미 할 수도 있습니다. 나는 그것이 너무 가능성이 높거나 눈에 띄는 것이라고 생각하지 않지만, 결국에는 그것에 대해별로 말할 수 없다.

마지막으로 자바 스크립트 자체가 있습니다. 표준에 따라, 그것은 그러한 캐싱을 가지고 있지 않습니다. 그러나이 표준은 이상한 캐싱을 금지하지 않으므로 언젠가는 그런 브라우저가 될 수도 있습니다. (지금 당장은 존재하지 않습니다.)

결국 기본적인 대답은 다음과 같습니다. : 눈에 띄는 방식으로 아닙니다. 그러나 실제로는 캐시로 인해 속도가 향상 될 수 있습니다. 항상 말하기는 어렵습니다.

+0

이것은 가장 정확한 답입니다. –

관련 문제