[컴][웹][자바스크립트] nested function 과 function 의 속도 차이

inner function 과 prototype function 의 속도 차이  / inline function / 어느 것이 속도가 빠를까?


Nested function 의 속도 부담


요새 한창 javascript 로 OOP 를 하고 있다. 그런데 private function 을 만들기에는 this 가 조금 부담스러운 느낌이라(정말 단순히 느낌만..^^;;;) 종종 function 안에 function 을 만들어서 사용하고 있다.(nested function)

nested function 은 당연히 그 함수가 실행될 때 계속 해서 만들어지게 돼서 부담이 있다. 그런데 그것이 실제로 속도에 얼마나 영향을 줄까해서 test code 를 만들어 볼까 했는데, 이미 있었다.(test code)

그리고 아래 글에서는 nesting function 과 관련해서 되도록 사용하지 말 것을 이야기 한다.

여기서 핵심은 함수가 자주 호출돼서 nested function 이 많이 호출되는 경우를 이야기 한다. 이 경우는 function 을 create 하고 destroy 하는 비용이 많이 든다. 하지만 1,2 번 정도의 호출인 경우에 nested function 은 오히려 memory 를 빠르게 회수할 수 있는 장점이 될 것 같다. 그런데 이런 경우를 고민하는 것보다는 차라리 안쓰는게 나을 듯 하다.

그리고 이녀석은 생김새만으로 판단하기에는 c/c++ 의 inline 함수를 떠올리게 된다.(물론 지극히 개인적인 생각이다.^^;;;) 하지만 속도는 정반대이다. c/c++ 는 실제로 compile 과정에서 함수가 아니라 function 내의 code 로 전환되지만, nested function 은 그냥 function 으로 남아있기 때문에, function 을 create 하는 비용이 많이 소모된다.

개인적으로도 nested function 은 code 의 가독성을 위해서 사용했는데, 2번이상 호출된다고 생각하면, 그냥 prototype function 으로 만드는 것이 나을 듯 하다.

댓글 없음:

댓글 쓰기