현재 듀얼 코어 CPU 인 Opteron 275 (2.2Ghz) 및 매우 빠른 하드 드라이브와 함께 4GB의 RAM을 갖춘 컴퓨터가 있습니다. C++ 템플릿을 사용하는 다소 단순한 프로젝트를 컴파일 할 때 (부스트를 생각하는 등), 컴파일 시간이 길어질 수 있습니다. (작은 프로젝트의 경우 몇 분, 큰 프로젝트의 경우 훨씬 더 오래 걸릴 수 있습니다.) 불행히도 코어 중 하나만이 100 % 고정되어 있으므로 I/O가 아니라는 것을 알고 있으므로 C++ 컴파일을 위해 다른 코어를 활용할 방법이 없다고 생각합니까?집중적 인 C++/템플릿 컴파일 속도를 높이기 위해 좋은 CPU/PC 설정이란 무엇입니까?
답변
템플릿의 컴파일 시간 문제는 종종 컴파일 문제가 아닌 링크 문제입니다.
.cpp 파일에서 템플릿을 내부적으로 사용하지만 헤더에 템플릿이 실제로 포함되어 있지 않은지 확인하여이를 수정하는 것이 좋습니다. 이것은 클래스를 선언하거나 public 멤버 (Pimpl Idiom, 기본적으로)를 선언하는 추상 기본 클래스에서 구현 클래스를 래핑하여 수행 할 수 있습니다. 메이크 기반 시스템에서 컴파일 멀티 스레드의 활용을 위해
이것은 좋은 지적이고 나는 더 잘 알아야한다. 그러나 나는 Pimpl 관용어로 게으르다. 그것은 여분의 일이다. – ApplePieIsGood
미리 컴파일 된 헤더를 사용하고 있습니까? 일반적으로 내 C++ 프로젝트에서 얻을 수있는 가장 큰 컴파일 속도 향상을 제공합니다.
또한 컴파일러에 따라 멀티 스레드 컴파일을 활성화 할 수 있습니다. 예를 들어 Visual C++에서는/MP 스위치 (see here for details)를 사용하지만 다른 명령 줄 옵션에 따라/MP가 항상 가능하지는 않습니다.
의 -j 스위치를 살펴보고, 일반적인 권장 사항은 코드가 어렵다 C++를 컴파일
make -j<number of cores + 1>
왜 '코어 수 +1'이되어야합니까? – bitek
다른 질문을 참조 할 수 있습니다. http://stackoverflow.com/questions/3025587/whats-best-value-for-make-j –
- 1. Mac OS X의 속도를 위해 수학 집중적 인 C++ 응용 프로그램을 프로파일 링하는 가장 쉽고/좋은 방법은 무엇입니까?
- 2. 데이터베이스 삽입 속도를 높이기 위해 카운터를 캐시하는 방법은 무엇입니까?
- 3. ASP.NET/C# 컴파일 속도를 향상시키는 가장 좋은 방법은 무엇입니까?
- 4. 내 프로그램 속도를 높이기 위해 해시 맵에 db 테이블을 저장해야합니까?
- 5. 실행 속도를 높이기 위해 실제 디스크를 에뮬레이션 하시겠습니까?
- 6. 상호 작용 속도를 높이기 위해 사용되는 jquery 선택기의 양을 줄입니다
- 7. GWT 컴파일 - 하나의 user.agent 옵션 만 가지고도 여전히 5 개의 순열이있는 이유는 무엇입니까? GWT 컴파일 속도를 높이기 위해 노력
- 8. 집중적 인 작업 후 네트워크 연결 재설정
- 9. 테이블 삭제/삽입 속도를 높이기 위해 PL/SQL 패키지에서 세션 변수 skip_unusable_indexes를 true로 설정하는 방법은 무엇입니까?
- 10. 안드로이드의 현재 속도를 계산하는 좋은 방법은 무엇입니까?
- 11. 속도를 높이기 위해 Ping 응용 프로그램을 다중 스레드 버전으로 변환 - C#
- 12. 가독성을 높이기 위해 임시 변수 만들기
- 13. 개발 속도를 높이기위한 훌륭한 Xcode 스크립트는 무엇입니까?
- 14. BizTalk의 속도를 높이는 가장 좋은 방법은 무엇입니까?
- 15. 사용 편의성을 높이기 위해 그라디언트/패턴 사용?
- 16. 성능을 높이기 위해 조인을 사용할 수 있습니까?
- 17. jQuery는 성능을 높이기 위해 DOM에 인덱스를 사용합니까?
- 18. 반복 코드를 피하는 방법 효율성을 높이기 위해
- 19. vs2010 컴파일 속도를 향상시키는 방법
- 20. 일부 Cellular Automata 시뮬레이션 속도를 높이기 위해 어떤 알고리즘을 구현할 수 있습니까?
- 21. OSX에서 Eclipse 프로젝트 검색 속도를 높이기 위해 할 수있는 일이 있습니까?
- 22. 에뮬레이터의 GC가 실제 장치보다 느리고 속도를 높이기 위해 할 수있는 일이 있습니까?
- 23. 집중적 인 코어 애니메이션 블록을 다른 스레드에서 시작하는 데 도움이됩니까?
- 24. mod_perl에서 CPU 집중적 인 요청을 어떻게 추적 할 수 있습니까?
- 25. 반복하지 않고 깨끗하고 집중적 인 자체 문서화 방법
- 26. 검색 속도를 높이기위한 좋은 체크섬
- 27. 웹 사용자의 연결 속도를 프로파일 링하는 좋은 방법은 무엇입니까?
- 28. 큰 C# 솔루션의 컴파일 속도를 향상시키는 방법
- 29. 관련성을 높이기 위해 뉴스 사이트에서 A/B 테스트를 실시하십시오.
- 30. 파이썬 코드를 가독성을 높이기 위해 바보로 만들지 않아야합니까?
를 호출하는 것입니다, 그리고 매우 쉬운 일이 아닙니다 특히 연결 단계에서 평행하게 만듭니다. 나는 왜 컴파일이 느려질 수 있는지에 대한 좋은 목록을 작성한 jalf라고 생각한다. 컴파일에 당신은 무엇을 사용하고 있습니까? 그리고 부스트의 어떤 부분? – GManNickG
그게 쉽지, 그것은 그의 최대 투표 대답 : http://stackoverflow.com/questions/318398/why-does-c-compilation-take-so-long/318440#318440 – GManNickG
일부 컴파일러는 IDE/컴파일 시스템을 읽습니다 , 병렬로 파일을 컴파일 할 수 있습니다. 그것은 듀얼 코어 시스템을 더 활용할 수 있습니다. linux/unix에서 GNU make를 예로 들자면, 파일을 병렬로 컴파일 할 수 있습니다. – jpyllman