2011-05-15 4 views
11

인라인 자바 스크립트 기능은 실행 속도를 호출하고이 문서에 설명 된대로 또한, Gzip으로 압축 한 후 코드 크기를 감소 :JavaScript 함수 호출을 자동으로 인라인하는 도구가 있습니까?

그러나

http://blog.calyptus.eu/seb/2011/01/javascript-call-performance-just-inline-it/

, 나는 자동으로 JS 소스 파일을 처리하는 도구를 찾을 수 없습니다 그 안에있는 모든 inlinable 함수 호출을 인라인합니다. Google의 클로저 컴파일러는 인라이닝을하지만 항상 그런 것은 아니며 구성 할 수도 없습니다.

미리 감사드립니다.

+2

모든 것을 인라인 할 필요가 없으므로 코드 재사용이 훨씬 어려워 질 것입니다. 나는 여러 최적화 (인라이닝 포함)를 수행하고 코드를 더 작게 만드는 Google Closure Compiler와 같은 것을 사용하는 것이 좋습니다. –

+3

이 답변은 더 좋은 답변입니다. 반복적 인 작업으로 인라인 할 때 종종 큰 차이를 만듭니다. 픽셀을 계속 처리하거나 노이즈를 계산하는 등의 작업. – bennedich

답변

1

JIT가 그림을 인라인하고 싶다고합시다. 인라인은 캐시 성능을 죽임으로써 성능을 쉽게 악화시킬 수 있습니다.

또한 실제 병목 현상을 식별하지 못하면 조기 최적화를 수행하는 것이 그만한 가치가 있습니다.

+2

-1 이것은 실제로 질문에 대답하지 않습니다. 인라인은 주 루프의 반복 내부와 같은 일부 상황에서 유용 할 수 있습니다. – Petah

+4

동일. 질문 : * X를 어떻게 풀 수 있습니까? 답 : * X를 풀지 마십시오. StackOverflow : * 화려한 *! 정말? 당신은 동기가 그 동기를 아는 것이 아닙니다. 또는 누군가의 동기, 그 질문을 인터넷 검색, 실제로 대답이 필요합니다. -1 – MaiaVictor

+0

Facebook에서 오는 사람들은 @Ivo Wetzel을 downvote하지 마십시오. 투표 가맹점이라고 불리는 것은 좋은 일이 아닙니다. – MaiaVictor

2

이 "기술"로 인해 실행 시간이 빨라진다 고 나는 거의 믿지 않습니다. 적어도 현실 세계에서는 그렇지 않습니다. 블로그가 코드 크기 &에 대한 코드를 작성할 수도 있습니다.

어쨌든 Javascript 축소/압축기가이 작업을 많이 수행하지는 않을 것이라고 생각합니다. 이유는 제공된 예제에서 간단하고 매우 분명합니다. 함수 호출을 실제 함수 코드로 바꾸면 다른 컨텍스트로 설정됩니다. 이것은 매우 악해질 수 있습니다. 부모 함수 (-context)가 이미 foo이라는 변수를 선언하고 사용하면 어떻게 될까요? 동일한 변수가 다른 함수 내에서 사용되면이를 덮어 쓰고 오류가 발생할 수 있습니다.

try/catch 또는 eval 블록을 신중하게 표현 된 "동적 범위"(실제로는 ecma 스크립트에서 사용할 수 없음)가있는 추가 컨텍스트를 만드는 용도가 더 악화되는 경우조차 더 나쁩니다. 그러나이 시나리오에서는 JIT 또는 Javascript 구현이 무엇이든 최적화하는 것이 거의 불가능합니다.

+0

JIT 엔진과 정적 분석 도구 (클로저 컴파일러와 같은)는 함수를 인라인하기로 결정할 때 범위 변경 영향을 고려합니다. –

+0

물론, 'try/catch'또는 'eval'이 컨텍스트 내에 포함되어있는 경우 모든 결정에 대한 "솔루션"은 "아무것도하지 마세요"라고합니다. – jAndy

관련 문제