독점적인 C++ 컴파일러를 사용하여 기존 컴퓨터에서 커널을 컴파일하면 성능이 향상됩니까?

독점적인 C++ 컴파일러를 사용하여 기존 컴퓨터에서 커널을 컴파일하면 성능이 향상됩니까?

저는 대학 시절부터 사용했던 오래된 노트북의 속도를 높여줄 무언가를 찾고 있습니다. 전반적인 성능을 약간 향상시키기 위해 커널을 다시 컴파일할 수 있다고 들었습니다. 하지만 그 노트북에는 여전히 인텔 컴파일러에 대한 (지금은 다소 오래된 것 같습니다) 학생 라이센스가 있었습니다.

이유는 잘 모르겠지만 Intel 컴파일러는 실행 파일을 GNU 버전보다 훨씬 빠르게 만듭니다(Intel CPU에서 비밀 확장을 사용하는 것일 수도 있습니다). 이 독점 컴파일러로 커널을 컴파일하면 속도 성능이 더욱 눈에 띄게 향상될지 궁금합니다.

또한 전반적인 성능 향상을 위해 시스템의 다른 주요 부분을 직접 컴파일할 수 있습니까?

답변1

나는 Linux 커널 개발자를 대변할 수 없지만(그리고 이것이 당신이 말하는 Linux 커널이라는 징후는 없지만 아마도 그럴 것이라고 가정하고 있습니다) OpenBSD(나에게 더 친숙한)에서는 심지어 새 버전으로 이동같은 컴파일러의이것은 "그냥 그렇게" 하고 싶은 것이 아닙니다.

커널은 복잡한 소프트웨어이므로 커널이 올바르게 실행되는지 확인하려면 특정 도구 체인을 사용하여 커널을 개발하고 테스트하는 것이 중요합니다.

새 버전의 컴파일러에는 컴파일된 코드에 미묘한 차이가 발생할 수 있는 변경 사항이 있습니다(또는 새 버전이 아닙니다). 개발자는 도입된 차이점으로 인해 시스템의 가장 핵심적인 소프트웨어 부분(커널)이 오작동하지 않도록 해야 합니다.

게다가 커널 소스 코드는 표준을 준수하는 C 코드가 아니며 Linux 커널은 GCC 툴체인에만 존재하는 확장을 사용합니다(또는 적어도 사용하는 데 사용됨). 나읽다clang이 컴파일러(현재 많은 OpenBSD 시스템의 기본 컴파일러)로 컴파일하려고 할 때 최소한 초기 문제가 있었습니다. 여기로 이사하는 것은 icc더 큰 진전이 될 수 있습니다.

OpenBSD에서는 사용자도낙담한개발자가 지원하는 일반 커널에서 구성 요소를 추가하거나 제거하면 디버깅 실패가 더 어려워지므로 기본 개별 컴파일러 플래그 변경을 포함하는 사용자 정의 커널을 컴파일하십시오.

한마디로 추천드리고 싶습니다아니요을 사용해 보세요 icc.


특정 응용 프로그램이 느리게 실행되는 경우 해당 응용 프로그램을 다시 컴파일하여 icc속도가 빨라지는지 확인할 수 있습니다. 오픈 소스 코드 컴파일에 대한 내 경험에 따르면 icc일부 응용 프로그램은 오픈 소스 컴파일러 툴체인을 위해 특별히 작성된 것처럼 보이며(개발자가 사용하는 것이기 때문에) 인텔 컴파일러로 깔끔하게 컴파일되지 않습니다.

다른 제안으로는 하드 드라이브를 더 빠른 드라이브로 업그레이드하거나 시스템에 RAM을 추가하는 것이 있습니다.이러한 개선을 통해 "더 나은" 컴파일러로 다시 컴파일하는 것보다 전반적인 성능이 더 향상될 수 있습니다., 특히 I/O 바인딩된 응용 프로그램을 사용하는 경우(업그레이드된 하드 드라이브의 이점을 누릴 수 있음)

관련 정보