Programing

gwt 컴파일러의 속도를 높이려면 어떻게 해야 하는가?

c10106 2022. 4. 21. 20:57
반응형

gwt 컴파일러의 속도를 높이려면 어떻게 해야 하는가?

프로젝트에 GWT를 더 많이 활용하기 시작했는데, GWT 컴파일러의 성능이 점점 더 귀찮아지고 있다.

우리는 문제를 완화하기 위해 작업 관행을 변경하기 시작할 것이다. 여기에는 GWT 컴파일러를 나중에 실행할 필요성은 배제하지만, 특히 실제 브라우저에서 문제를 우리가 원하는 시간보다 훨씬 늦게 잡을 수 있는 자체적인 위험이 수반된다.

이상적으로, 우리는 GWT 컴파일러 자체를 더 빨리 만들고 싶다 - 꽤 작은 애플리케이션을 컴파일할 수 있는 1분의 1분이 화를 내고 있다.하지만, 우리는 꽤 순진한 패션이라면 컴파일을 이용하고 있기 때문에, 나는 우리가 빠르고 쉽게 얻을 수 있기를 바란다.

우리는 현재 com.gwoogle.gwt.dev를 호출하고 있다.최대 256m의 힙과 많은 스택 공간을 가진 Ant 대상의 Java 애플리케이션으로 컴파일러.컴파일러는 Fork=true와 최신 Java 6 JRE를 이용하여 Java6의 향상된 성능을 이용하기 위해 Ant에 의해 출시된다.메인 컨트롤러 클래스를 컴파일러에 애플리케이션 클래스 경로와 함께 전달하고, 종료한다.

속도를 더 내기 위해 우리가 할 수 있는 다른 것은 무엇인가?우리는 그것이 무엇을 해야 하는지를 발견하는데 시간을 덜 들일 수 있도록 더 많은 정보를 줄 수 있는가?

브라우저 하나만 컴파일하라고 할 수 있는 건 알지만 멀티브라우저 테스트를 해야 하니까 그건 현실적으로 불가능해.

모든 제안은 이 시점에서 환영한다.

불편한 진실부터 시작하자: GWT 컴파일러 성능은 정말 형편없다.여기저기 해킹을 해도 성능이 크게 좋아지진 않을 겁니다.

당신이 할 수 있는 멋진 성능 해킹은 오직 특정한 브라우저만을 위해 컴파일하는 것이다, 당신의 다음 줄을 삽입해서.gwt.xml:

<define-property name="user.agent" values="ie6,gecko,gecko1_8"></define-property>

또는 gwt 2.x 구문 및 하나의 브라우저 전용:

<set-property name="user.agent" value="gecko1_8"/>

예를 들어, 이것은 IE와 FF에 대해서만 당신의 신청서를 컴파일할 것이다.테스트에 특정 브라우저만 사용하는 것을 알고 있다면, 이 작은 해킹을 사용할 수 있다.

다른 옵션: 여러 로케일을 사용 중이고 테스트에 한 로케일만 사용하는 경우 GWT가 기본 로케일을 사용하도록 모두 주석을 달 수 있으므로 컴파일 시간부터 약간의 추가 오버헤드를 줄일 수 있다.

요컨대, 컴파일러 성능의 순서는 증가하지 않지만, 몇 번의 휴식을 취하면, 여기 저기서 몇 분 정도 시간을 줄일 수 있다.

-local Workers 플래그로 GWT 컴파일러를 실행하면 컴파일러가 여러 순열을 병렬로 컴파일한다.이를 통해 멀티 코어 머신의 모든 코어를 사용할 수 있으며, 예를 들어 -localWorkers 2는 컴파일러에게 두 개의 순열을 병렬로 컴파일하도록 지시한다.크기 차이의 순서는 얻을 수 없지만( 컴파일러의 모든 것이 평행할 수 있는 것은 아님) 여러 개의 순열을 컴파일하는 경우에는 여전히 바람직하지 않은 속도 상승이다.

만약 당신이 GWT의 트렁크 버전을 사용하려고 한다면, 당신은 어떤 브라우저에도 호스팅 모드를 사용할 수 있을 것이다(프로세스에서 벗어난 호스팅 모드). 이것은 호스팅 모드의 대부분의 현재 문제를 완화시킨다.컴파일은 크기가 더 빨리 커질 것 같지 않기 때문에 GWT는 항상 호스트 모드로 발전하는 것처럼 보인다.

비록 이 항목이 꽤 오래되었고 여러분 대부분이 이미 알고 있겠지만, GWT 2.x에는 최적화를 건너뛰어 컴파일 속도를 높이는 새로운 컴파일 플래그가 포함되어 있다는 것을 언급할 필요가 있다고 생각한다.그렇게 컴파일된 자바스크립트를 배치해서는 절대 안 되지만, 비생산 연속 빌드 시 시간 절약이 될 수 있다.

-draftCompile을 GWT 컴파일러 라인에 포함하십시오.

다음은 설정할 수 있는 user.에이전트목록 입니다.

(크롬 전용 순열만 만들도록 설정할 것을 검색할 때 여기에 계속 추가하기 때문에 여기에 추가한다. 정답:<set-property name="user.agent" value="safari"/>)

GWT의 최신 버전(2.3 또는 2.4 시작, 내 생각엔)에서도 추가할 수 있다.

<collapse-all-properties />

개발 목적을 위해 gwt.xml로 이동하십시오.그것은 GWT 컴파일러가 모든 로케일과 브라우저를 포함하는 단일 순열을 만들도록 지시할 것이다.따라서 당신은 여전히 모든 브라우저와 언어로 테스트할 수 있지만, 여전히 하나의 순열만 컴파일하고 있다.

빌드에 프로덕션용 옵션을 하나 추가하십시오.

-localWorkers 8– 여기서 8은 순열을 계산하는 동시 스레드 수입니다.이 번호를 자신에게 더 편리한 번호로 조정하기만 하면 된다.GWT 컴파일 성능을 참조하십시오(Dennis Ich 주석 덕택).

테스트 환경에 컴파일하는 경우 다음을 사용할 수 있다.

-draftCompile더 빠르지만 최적화되지 않은 컴파일을 가능하게 한다.

-optimize 0코드 최적화가 되지 않는 경우(9은 최대 최적화 값)

빌드 및 호스팅 모드 성능을 두 배 이상 높인 또 다른 것은 SSD 디스크 사용(현재 호스팅된 모드는 매력적으로 작동한다)이었다.값싼 해결책은 아니지만 GWT를 얼마나 사용하느냐와 시간비용에 따라 그만한 가치가 있을지도 모른다!

이것이 너에게 도움이 되길 바래!

GWT 컴파일러가 코드분석을 많이 하고 있어서 속도를 내기는 어려울 것 같다.구글 IO 2008의 이번 세션은 GWT가 무엇을 하고 있는지, 왜 그렇게 오래 걸리는지 알 수 있을 것이다.

내가 추천하는 것은 가능한 한 호스트 모드를 사용한 후 테스트를 하고 싶을 때만 컴파일하는 것이다.이것은 당신이 이미 찾은 해결책처럼 들리지만, 기본적으로 호스트 모드가 있는 이유(글쎄, 그것과 디버깅)이다.

GWT 컴파일 속도를 높일 수 있지만 GWT가 기본적으로 하는 5종류가 아닌 일부 브라우저에서만 컴파일할 수 있다.호스트 모드를 사용하려면 두 개 이상의 브라우저에 대해 컴파일하십시오. 단일 브라우저에 대해 컴파일할 경우 브라우저 탐지 코드가 최적화되고 호스트 모드가 더 이상 작동하지 않음.

더 적은 수의 브라우저에 대해 컴파일 구성을 쉽게 구성하는 방법은 기본 모듈에서 상속되는 두 번째 모듈을 만드는 것이다.

<module rename-to="myproject">
  <inherits name="com.mycompany.MyProject"/>
  <!-- Compile for IE and Chrome -->
  <!-- If you compile for only one browser, the browser detection javascript
       is optimised away and then Hosted Mode doesn't work -->
  <set-property name="user.agent" value="ie6,safari"/>
</module>

만약rename-to속성이 동일하게 설정되면 출력 파일이 전체 컴파일을 수행한 경우와 같음

  • 애플리케이션을 여러 모듈 또는 진입점으로 분할한 후 필요한 경우에만 다시 컴파일하십시오.
  • 컴파일 스토리를 제공하는 트렁크 버전을 사용하여 응용프로그램을 분석하십시오.이것은 1.6 컴파일러와 관련이 있을 수도 있고 없을 수도 있지만 무슨 일이 일어나고 있는지를 나타낼 수도 있다.

GWT 2.x의 경우, 만약 당신이

<set-property name="user.agent" value="ie6"/>
<extend-property values="ie8,gecko1_8" name="user.agent"/>

순열도 두 개 이상 지정할 수 있다.

gwt의 특정 모듈을 컴파일할 수 있음 프로젝트의 build.xml에서 컴파일할 모듈을 언급하기만 하면 된다.

아래 명령의 도움을 받아

ant -Dap.build.javadoc gwt

참조URL: https://stackoverflow.com/questions/1011863/how-do-i-speed-up-the-gwt-compiler

반응형