JavaScript 에서 익명, 명명 함수 의 성능 테스트

2300 단어
우 리 는 항상 익명 함수 (Anonymous function) 를 통 해 리 셋 을 쓴다.
쉽게 말 하면 익명 즉 이름 이 없 는 함 수 는 일반적으로 즉시 실행 된다.그러나 그것 과 명명 함수 (이름 이 있 는 함수) 의 성능 은 어 떻 습 니까?
우 리 는 Shell 명령 을 실행 할 수 있 는 컴퓨터 를 찾 아서 대량의 함수 호출 을 통 해 두 사람의 실행 소모 시간 을 볼 수 있 습 니 다.
anonymous.js
 
  
var count = 100000000
  , sum   = 0
while (count--) (function() { sum++ })()

실행 해 봐.
 
  
$ time node anonymous.js
real    0m1.456s
user    0m0.015s
sys     0m0.031s

이름 함수 다시 보기
named.js
 
  
var count = 100000000
  , sum   = 0

var cb = function() {
  sum++
}

while (count--) cb()


실행 해 봐.
 
  
$ time node named.js
real    0m0.575s
user    0m0.000s
sys     0m0.046s

명명 함수 가 훨씬 빠 를 텐 데 왜 그 럴 까요?사실 설명 하기 어렵 지 않 습 니 다. 익명 함 수 는 매번 리 셋 을 재해 석 해 야 합 니 다. 그러나 명명 함 수 는 한 번 만 해석 해 야 하기 때문에 성능 이 향상 되 지만 테스트 결과 이러한 향상 은 매우 미세 하 며 매우 순 조로 운 리 셋 을 따로 다른 변수 로 쓸 필요 가 없습니다.
또한 명명 함수 에는 두 가지 쓰기 가 있 습 니 다.
함수 식
 
  
var func = function() {
  console.log('a')
}

함수 선언
 
  
function func() {
  console.log('b')
}

사실 이 두 개 를 같이 쓰 면 문제 가 있 을 수 있 습 니 다.
 
  
var func = function() {
  console.log('a')
}
function func() {
  console.log('b')
}
// : a

따라서 현재 함수 표현 식 형식 을 많이 사용 하지만 함수 성명 의 성능 은 어 떻 습 니까?
named2.js
 
  
var count = 100000000
  , sum   = 0

function cb() {
  sum++
}

while (count--) cb()


실행 하고 두 가 지 를 비교 하 다.
 
  
$ time node named.js
real    0m0.553s
user    0m0.000s
sys     0m0.015s

$ time node named2.js
real    0m0.529s
user    0m0.000s
sys     0m0.047s


함수 성명 이 조금 빠 를 것 같 지만 매우 빠 르 고 뚜렷 하지 않 습 니 다. 개인 적 으로 함수 성명 식 작성 을 권장 합 니 다.
PS: 이 데 이 터 는 모두 윈도 7 에서 git - base 테스트 를 사용 합 니 다.

좋은 웹페이지 즐겨찾기