복붙노트

[SCALA] 스칼라 속도를 컴파일 대 속도를 컴파일 자바

SCALA

스칼라 속도를 컴파일 대 속도를 컴파일 자바

나는 잠시 동안 스칼라 프로그래밍 봤는데 나는 그것을 좋아하지만 난에 의해 짜증이야 한 점은 프로그램을 컴파일하는 데 걸리는 시간입니다. 그것은 작은 일처럼 보인다 있어요하지만 자바와 내가, 내 프로그램에 작은 변화를 만들어 실행 넷빈즈에서 버튼을 붐을 클릭 수, 그것은 실행중인, 시간 스칼라에서 컴파일을 통해 많은 시간을 소비하는 것 같다. 나는 많은 대형 프로젝트와 스크립팅 언어 때문에 컴파일, 내가 자바를 사용했을 때 나는 발생 보지 않았다 필요 걸리는 시간을 매우 중요하게 듣고.

하지만 난 그것을 이해, 다른 컴파일 언어보다 더 빨리, 그리고 내가 스칼라로 전환 이유를 (그것은 매우 간단한 언어이다) 때문에 빠른 자바에서오고있다.

그래서 나는 스칼라 빠르게 컴파일하고 지금까지 scalac javac의처럼 재 빠르게 될 것입니다 수 있습니다, 물어보고 싶었다.

해결법

  1. ==============================

    1.스칼라 컴파일러는 타입 추론, 암시 적 변환, 그리고 훨씬 더 강력한 타입 시스템을 제공, 자바의보다 정교한입니다. 이러한 기능은 무료로 제공되지 않습니다, 그래서 scalac 이제까지 javac의 한 빨리 것으로 기대하지 않을 것이다. 이 작업을하는 프로그래머와 일을하는 컴파일러 사이의 트레이드 오프를 반영합니다.

    스칼라 컴파일러는 타입 추론, 암시 적 변환, 그리고 훨씬 더 강력한 타입 시스템을 제공, 자바의보다 정교한입니다. 이러한 기능은 무료로 제공되지 않습니다, 그래서 scalac 이제까지 javac의 한 빨리 것으로 기대하지 않을 것이다. 이 작업을하는 프로그래머와 일을하는 컴파일러 사이의 트레이드 오프를 반영합니다.

    즉 시간이 이미 스칼라 2.7에서 스칼라 2.8에가는 눈에 띄게 향상 컴파일 말했다, 나는 개선이 먼지가 2.8에 정착했다고 지금은 지속될 전망이다. 이 페이지는 스칼라 컴파일러의 성능을 향상시키기 위해 지속적인 노력과 아이디어의 일부를 설명합니다.

    마틴 오더 스키는 그의 대답에서 더 자세한 내용을 제공합니다.

  2. ==============================

    2.스칼라 컴파일러의 속도 (부족) 두 가지 측면이 있습니다.

    스칼라 컴파일러의 속도 (부족) 두 가지 측면이 있습니다.

  3. ==============================

    3.당신은 스칼라 컴파일 컴파일하는 데 시간이 더 자바보다 적어도 크기 순서 소요 알고 있어야합니다. 그 이유는 다음과 같습니다 :

    당신은 스칼라 컴파일 컴파일하는 데 시간이 더 자바보다 적어도 크기 순서 소요 알고 있어야합니다. 그 이유는 다음과 같습니다 :

  4. ==============================

    4.스칼라을 수행하는 가장 좋은 방법은 IDEA와 SBT와 함께입니다. (당신이 좋아하는 경우에, 당신을 위해 할 수 있습니다) 초등학교 SBT 프로젝트를 설정하고 자동 컴파일 모드 (명령 ~ 컴파일)에서 실행하고 프로젝트를 저장할 때, SBT는 다시 컴파일합니다.

    스칼라을 수행하는 가장 좋은 방법은 IDEA와 SBT와 함께입니다. (당신이 좋아하는 경우에, 당신을 위해 할 수 있습니다) 초등학교 SBT 프로젝트를 설정하고 자동 컴파일 모드 (명령 ~ 컴파일)에서 실행하고 프로젝트를 저장할 때, SBT는 다시 컴파일합니다.

    또한 SBT는 IDEA에 대한-에 연결하고 실행 구성의 각에 SBT 액션을 첨부 할 수 있습니다. SBT는-플러그인 당신에게 IDEA에서 대화 형 SBT 콘솔을 제공합니다.

    어느 쪽이든 (SBT 외부 실행 또는 SBT 플러그인), SBT 프로젝트 얻을 구축에 사용 된 모든 클래스를 실행하여 상태를 유지는 "예열"과 JIT-ED 및 스타트 업 오버 헤드가 제거됩니다. 또한, SBT는 필요한 경우에만 소스 파일을 컴파일합니다. 그것은 스칼라 프로그램을 구축하기까지 가장 효율적인 방법입니다.

  5. ==============================

    5.스칼라-IDE (이클립스)의 최신 버전은 훨씬 더 증가 컴파일을 atmanaging 있습니다.

    스칼라-IDE (이클립스)의 최신 버전은 훨씬 더 증가 컴파일을 atmanaging 있습니다.

    "무엇이 최선의 스칼라 빌드 시스템인가?"를 참조 이상.

    스칼라 2 언어에 대한 빠른 오프라인 컴파일러 - - 다른 솔루션은 금융위원회를 통합하는 것입니다 IDE에서 빌더로 (이 블로그 게시물에 도시 된 바와 같이).

    다니엘 스피 웍이 코멘트에 언급하지만 직접하지만 이클립스하지 :

    마지막으로, 잭슨 데이비스는 의견을 생각 나게로 :

    SBT (단순 빌드 도구)도 완벽하지 않고, 강화 된 증분 컴파일이 다가오는 0.9 SBT 버전의 작품 임에도 불구하고, (트리거 실행을 통해) "증가"편집의 어떤 종류를 포함한다.

  6. ==============================

    6.FSC를 사용하여 - 그것은 백그라운드 작업으로 앉아 모든 시간을로드 할 필요가없는 빠른 스칼라 컴파일러입니다. 그것은 이전의 컴파일러 인스턴스를 다시 사용할 수 있습니다.

    FSC를 사용하여 - 그것은 백그라운드 작업으로 앉아 모든 시간을로드 할 필요가없는 빠른 스칼라 컴파일러입니다. 그것은 이전의 컴파일러 인스턴스를 다시 사용할 수 있습니다.

    넷빈즈의 스칼라 플러그인 (문서 그렇게 말한다) FSC를 지원하는지 잘 모르겠지만, 나는 그것이 작동 만들 수 없습니다. 플러그인 빌드 야간보십시오.

  7. ==============================

    7.당신은 스칼라 무료입니다 JRebel 플러그인을 사용할 수 있습니다. 그래서 당신은 종류의 "디버거 개발"수 JRebel은 항상 그 자리에서 변경된 클래스를 다시로드합니다.

    당신은 스칼라 무료입니다 JRebel 플러그인을 사용할 수 있습니다. 그래서 당신은 종류의 "디버거 개발"수 JRebel은 항상 그 자리에서 변경된 클래스를 다시로드합니다.

    나는 그가 말하고있는 곳으로 마틴 오더 스키 자신이 어떤 말씀을 읽게 그 implicits에 대한 검색 바쁜 컴파일러를 유지할 수 (컴파일러가 없습니다 더 모호성을 배제하기 위해 동일한 변환 암시 하나 하나보다가 있는지 확인해야합니다). 그래서주의 implicits을 처리하는 것이 좋습니다 수 있습니다.

    그것은 또한 100 % 스칼라하지만, 비슷한 수없는 경우, 당신은 코 틀린 시도를 줄 수 있습니다.

    - 올리버

  8. ==============================

    8.나는이 다운 투표를 할 것이라 확신합니다,하지만 매우 빠르게 주위 회전은 항상 품질이나 생산성에 도움이되지 않습니다.

    나는이 다운 투표를 할 것이라 확신합니다,하지만 매우 빠르게 주위 회전은 항상 품질이나 생산성에 도움이되지 않습니다.

    더 신중하게 생각하고 적은 개발 마이크로 사이클을 실행하는 시간을 가지십시오. 좋은 스칼라 코드 (부수적 인 세부 사항과 복잡성에서 즉, 무료) 밀도가 더 중요하다. 그것은 더 생각을 요구하고는 (적어도 처음에는) 시간이 걸립니다. 개별적으로 좀 더하고 여전히 생산성과 작업의 질을 향상 적은 코드 / 테스트 / 디버그주기를 잘 진행할 수 있습니다.

    요컨대 스칼라 더 적합한 최적의 작동 패턴을 구한다.

  9. from https://stackoverflow.com/questions/3606591/why-does-intellij-idea-compile-scala-so-slowly by cc-by-sa and MIT license