사전 빌드 된 바이너리 성능을 컴파일하고 사용합니까?


11

소스가 다른 플랫폼에서 여러 다른 아키텍처에 대해 컴파일 된 경우와 비교하여 실제 시스템의 소프트웨어 구성 요소에 대한 소스를 수동으로 컴파일하면 성능이 향상됩니까 (빠른)? 필자는 다운로드 한 소스를 컴파일하는 좋은 결과를 얻었으며 소프트웨어 업데이트와 함께 종종 사전 컴파일 된 바이너리를 다운로드하는 대신 컴파일로 인한 것인지 궁금합니다.


2
많은 아키텍처와의 호환성을 위해 컴파일하면 단일 아키텍처에 대해 컴파일 할 때 가능한 특정 최적화가 제거 될 수 있습니다.
Robert Harvey

1
이외에도 더 (거의 항상 도움이 될 것이다) 대상이되는, 당신은 아마 것 또한 다른 컴파일러 다른 최적화를 지원하고, 때로는 성능 병목 현상이 하나 떨어져 최적화 할 수 있지만 다른 (들) - 대형 컴파일러의 차이가 발생.
Daniel B

답변:


8

대부분의 경우는 아니지만 많은 경우에 그렇습니다. 컴파일러가 특정 CPU 및 환경에 최적화 된 기본 코드를 생성 할 수 있기 때문입니다. 코드는보다 "타겟팅"됩니다.


7

소스에서 컴파일하면 컴파일러 플래그를 특정 플랫폼에 원하는 방식으로 설정할 수 있습니다. 사용자와 동일한 설정으로 컴파일 된 패키지를 다운로드해도 아무런 차이가 없지만 설정을 기본값에서 변경하면 크게 향상 될 수 있습니다.

예를 들어, 다운로드 용 바이너리가 의도적으로 또는 실수로 디버깅 용으로 컴파일 된 경우보다 적극적인 최적화를 설정하면 거의 모든 상황에서 성능이 향상됩니다. 반면에 컴파일 된 코드가 최대 값에 최적화되면 아무런 차이가 없습니다.


그래서 내 컴파일 노력은 헛되지 않았을 것입니다. 소스를 mod_jk에 다운로드하여 컴파일했는데 매우 빨라서 수동 컴파일 때문인지 궁금합니다. 응답 해주셔서 감사합니다.
Niklas

1

이것은 실제로 사용되는 두 컴파일러와 컴파일러 플래그에 따라 다릅니다. 일반적으로 로컬 시스템의 컴파일러 및 플래그 설정은 올바르게 구성된 경우 특정 시스템에 더 적합합니다.

그러나 예를 들어 사전 빌드 된 바이너리가 컴파일러와 비교하여 훨씬 더 최적화 된 컴파일러 (또는 특정 코드 조각에 맞게 조정 된 플래그와 시스템에 맞게 운에 의해 설계된 플래그로 설계된 벤치 마크 스페셜)로 빌드 된 경우 시스템에있는 경우 시스템에있는 컴파일러가 실제로 성능을 저하시킬 수 있습니다.

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