부트 스트랩 gcc와 같은 대용량 소프트웨어를 컴파일하는 데 더 중요한 CPU 또는 RAM은 무엇입니까?


11

새 컴퓨터를 곧 구매하려고합니다. 빠른 컴파일 시간에 최고의 성능을 발휘할 수있는 기계를 원합니다.

따라서 감당할 수있는 최고 GHz의 쿼드 코어 CPU를 확보해야합니까, 아니면 고속 RAM에 투자해야합니까?

어떤 유형의 RAM에 대한 권장 사항이 있습니까?

그래픽 성능은 중요하지 않습니다. 많은 소프트웨어를 컴파일하고 수학 시뮬레이션을 실행합니다.

답변:


8

나는 둘 다 말하지 않을 것이다. 오히려 빠른 SSD 하드 드라이브를 구입하십시오 . 물론 적절한 CPU와 RAM 용량이 필요하지만, 그래 ...


2
글쎄, 나는 SSD를 얻지 못했습니다. 대신 32GB의 RAM을 가지고 tmpfs에서 RAM의 모든 것을 컴파일합니다 .... SSD보다 빠릅니다 =)
Dima

1
글쎄, 그건 같은 생각이다 : p
Svish

2
동의하지 않습니다. 랩탑 용 SSD 드라이브를 얻었고 컴파일 속도에는 거의 차이가 없었습니다. 반면 SSD 시스템에서 CPU 속도가 거의 3 배이고 6GB는 4GB에 불과한 새 컴퓨터를 구입하면 거의 3 배나 빠르게 컴파일 할 수있었습니다. anandtech.com/show/2829/25 SSD를 가진 발견 눈에 띄는 컴파일러 속도 향상 동안 blog.hypercomplex.co.uk/index.php/2010/06/...이 23 % 개선을 찾습니다. 메모리가 충분하면 컴파일에 디스크 사용량이 거의 없다는 것이 논리적으로 보입니다.
Chris Dragon

1
또 다른 생각은 일부 컴파일러가 메모리 대신 많은 임시 파일을 사용하여 컴파일 할 수 있다는 것입니다.이 경우 SSD 또는 램 디스크가 가장 도움이됩니다. 그러나 현대의 컴파일러는 메모리가 저렴하고 크기가 크고 메모리가 부족할 때 디스크로 페이징을 처리하는 방식으로 엔지니어링 될 것으로 기대하지 않습니다. SSD는 XCode 3.2.6 (gcc 3 또는 4 기반)을 사용하여 이점이 거의 없었습니다.
Chris Dragon

SSD는 파일 복사 / 이동을 많이 사용하는 대규모 프로젝트 / 솔루션에서 상당한 차이를 만듭니다. 개인적으로 RAM tmpfs 스타일을 사용하지는 않았지만 좋은 소식을 들었습니다. 소규모 프로젝트의 경우에는 문제가 없습니다. 거대한 사람들을 위해? 충분하지 않을 수 있습니다.
kayleeFrye_onDeck

4

아마도 RAM은 당신에게 돈을 더 큰 타격을 줄 것입니다. 컴파일, 특히 대규모 응용 프로그램은 매우 I / O 집약적이며 RAM이 많을수록 디스크와의 페이징 시간을 절약 할 수 있습니다. 오늘날 대부분의 CPU, 특히 저렴한 쿼드 코어를 사용하는 경우 컴파일에 충분한 CPU 성능을 제공하지만 RAM을 사용하면 데이터를주고받는 데 도움이됩니다.

두 번째 생각에서, 그것은 일종의 수학 시뮬레이션과 빌드 프로세스에 달려 있습니다. 그것들은 병렬화 가능합니까? 그렇지 않다면, 새로운 인텔 칩 (Core i7)이 코어별로 상당히 빠르지 만 더 많은 코어를 추가해도 속도가 빨라지는 않습니다.


1
컴파일은 디스크와 어떤 관련이 있습니까?
Arash September

2

나는 많은 양의 RAM을 얻고 임시 저장을 위해 램 디스크를 사용한다고 말하고 싶습니다. 컴파일 속도가 크게 향상됩니다. 빠른 멀티 코어 CPU도 괜찮을 것이지만 많은 램에서 더 많은 이점을 얻을 것이라고 생각합니다. 몇 가지 아이디어에 대해서는 기사를 살펴보십시오 . 여기에 더 많은 정보가 있고 여기에 더 많은 정보가 있습니다 . RAM을 사용하는 것이 SSD를 사용하는 것보다 빠를 것이라고 생각하지만 잘못되었을 수 있습니다.


2

계산을 위해서는 프로세서가 가장 중요합니다.

컴파일은 프로세서와 RAM을 모두 강조합니다.

가장 비용 효율적인 솔루션은 귀하가 감당할 수있는 최상의 CPU, 바람직하게는 쿼드 코어를 얻는 것입니다. RAM이 그대로 (DDR3이 DDR2만큼 저렴함) RAM이 작기 때문에 적은 동전에 필요한만큼 많은 RAM을 쉽게 연결할 수 있습니다. 그것이 얼마나 저렴한 지 보여주기 위해 노력하고 있습니다). 그래서 가능한 한 양질의 CPU에 감당할 수있는만큼 투자 할 것입니다.


더 빠른 CPU를 얻기 위해 더 많은 돈을 쓰는 것이 좋습니다. 그러나 더 많은 코어를 얻기 위해 더 많은 돈을 쓰지 않습니다. GCC는 단일 스레드에서 모든 컴파일을 수행하므로 둘 이상의 코어를 사용하지 않습니다.
아이작 라 비노 비치

1
@Isaac 예. 그러나 빌드 시스템은 일반적으로 옵션을 make사용하여 여러 gcc 작업을 동시에 생성 할 수 있습니다 -j. 또한 llvm은 여러 스레드를 사용하여 단일 파일을 컴파일 할 수 있거나 컴파일 할 수 있다고 생각합니다.
Ponkadoodle

@Wallacoloo 좋습니다 . 종속성 그래프에 평행 한 파일이있을 때 때로는 약간의 추가 속도를 얻을 수 있습니다 . 그럼에도 불구하고 빌드 속도를 높이려면 추가 코어가 매우 사소한 요소라고 생각합니다. 여분의 코어가 새로운 CPU를 표준 기능 때문에 하드, 말할 단지 빠른 클럭에 의해 속도 것을. 내가 틀렸다는 것을 보여주고 싶다면 -j를 사용하거나 사용하지 않고 큰 컴파일을 시도하십시오.
아이작 라 비노 비치

2
@IsaacRabinovitch 실제로 큰 코드 기반에서는 많은 문제가있다 . 우리의 코드베이스 컴파일에 시간이 거의 선형 적으로 감소한다 distcc( make -j8(로컬) 최대 make -j30(네트워크를 통해 분산))
알렉스

0

CPU가있는 그래픽 카드는 메인 CPU의 부하를 줄일 수 있기 때문에 그래픽이 도움이 될 수 있습니다. CPU보다 CPU 전원이 더 중요 할 수 있지만 둘 다 더 좋을수록 좋습니다.


좋은 점-프로세스가 CUDA 코어를 사용할 수있는 경우에만 가능합니다.
NoBugs

0

물리적 한계로 인해 코어 자체는 언제라도 훨씬 빨라지지 않습니다. 따라서 더 빠른 CPU에 투자하는 맞춤형 실리콘으로 전환하려는 경우가 아니라면 병렬화가 실제로 약간의 차이를 만들지 않으면서도 많은 소프트웨어가 거의 4 코어를 넘지 않는 한 문제가 해결되지 않습니다. , 나는 종종 전체 시스템을 컴파일하고 여러 번 리소스 통계를 보러 가기 때문에 그것을 알고 있습니다. 또한 개발자가 병렬화를 늘리고 싶더라도이를 좋은 방법으로 만들기 위해 때로는 혼란스러워합니다. CPU에 대한 투자는 서비스 성능을 향상 시키거나 데이터를 기반으로 먼저 계산을 수행하는 경우에 좋습니다. 나중에 실행 동작에 영향을 미칠지라도; 컴파일이 이러한 패턴 중 일부를 따르는 경우 논의하기가 더 어려울 수 있지만 빌드 프로세스의 특별한 경우입니다. 예를 들어, 그래픽 컴퓨팅에서 더 많은 코어가 여전히 약간의 차이를 만듭니다. 그 외에는 최대한 많이 I / O를 늘리기 위해 할 수있는 일을 수행하며 디스크, 램 및 마더 보드가 포함될 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.