본문 바로가기

좋아하는 것_매직IT/96.IT 핫이슈

Rust와 C++의 컴파일 시간 누가 빠를까요? (ft.quick-lint-js)

반응형

Rust와 C++의 컴파일 시간 누가 빠를까요?

저도 해당 내용이 궁금해서요 찾아보니, 오늘 소개할 웹페이지에서 재밌는 글을 읽게 되어 소개합니다.

728x90

요즘에 Rust와 C++가 여러 면에서 비교 대상이 되곤 하는데요...
그러나 컴파일 시간을 직접적으로 비교하기엔 같은 프로젝트가 두 언어로 모두 작성된 경우가 드물어서 힘든데요..
quick-lint-js는 C++로 작성된 프로젝트에서 일부를 Rust로 재작성하여 컴파일 시간을 비교했다고 하네요..
(단!!, 컴파일 환경에서 Windows는 빠졌다고 하네요..)

정말로 세상에는 궁금증을 해결해 주시는 분들이 많으신것 같해요.....
직접 해보려다가 찾아보니 나와서 이렇게 공유 드립니다. 

혹시나 이글을 읽으시는 분들께서요...한번 비교해봐?? 라고 저처럼 생각하셨을텐데요....
이렇게 직접 비교해서 공유해주시는 분들 때문에 너무나 감사한 요즘입니다. ㅎㅎ

웹페이지에서 다루고 있는 내용을 잠깐 보면요..아래와 같고요..
---
Is coding in Rust as bad as in C++?
A practical comparison of build and test speed between C++ and Rust.

C++ is notorious for its slow build times. “My code's compiling” is a meme in the programming world, and C++ keeps this joke alive.

Projects like Google Chromium take an hour to build on brand new hardware and 6 hours to build on older hardware. There are tons of documented tweaks to make builds faster, and error-prone shortcuts to compile less stuff. Even with thousands of dollars of cloud computational power, Chromium build times are still on the order of half a dozen minutes. This is completely unacceptable to me. How can people work like this every day?

I've heard the same thing about Rust: build times are a huge problem. But is it really a problem in Rust, or is this anti-Rust propaganda? How does it compare to C++'s build time problem?

I deeply care about build speed and runtime performance. Fast build-test cycles make me a productive, happy programmer, and I bend over backwards to make my software fast so my customers are happy too. So I decided to see for myself whether Rust build times were as bad as they claim. Here is the plan:

Find an open source C++ project.
Isolate part of the project into its own mini project.
Rewrite the C++ code line-by-line into Rust.
Optimize the build for both the C++ project and the Rust project.
Compare compile+test times between the two projects.
---

해당 내용을 간단하게 해석해보자면요...아래와 같습니다. 
---
Rust에서 코딩하는 것이 C++에서만큼 나쁜가요?
C++와 Rust 사이의 빌드 및 테스트 속도에 대한 실질적인 비교.

C++는 빌드 시간이 느린 것으로 유명합니다. "내 코드가 컴파일되고 있다"는 것은 프로그래밍 세계의 밈이며 C++는 이 농담을 생생하게 유지합니다.

Google Chromium과 같은 프로젝트는 새로운 하드웨어에서 빌드하는 데 1시간이 걸리고 이전 하드웨어에서 빌드하는 데 6시간이 걸립니다. 빌드를 더 빠르게 하기 위한 수많은 문서화된 조정과 더 적은 양의 컴파일을 위한 오류가 발생하기 쉬운 바로 가기가 있습니다. 수천 달러의 클라우드 계산 능력에도 불구하고 Chromium 빌드 시간은 여전히 6분 정도입니다. 이것은 나에게 완전히 받아 들일 수 없습니다. 어떻게 사람들이 매일 이렇게 일할 수 있습니까?

나는 Rust에 대해서도 같은 말을 들었습니다. 빌드 시간이 큰 문제입니다. 그러나 이것이 Rust에서 정말 문제입니까, 아니면 이 안티-러스트 선전입니까? C++의 빌드 시간 문제와 비교하면 어떻습니까?

저는 빌드 속도와 런타임 성능에 깊은 관심을 가지고 있습니다. 빠른 빌드-테스트 주기는 저를 생산적이고 행복한 프로그래머로 만들고, 고객도 만족할 수 있도록 소프트웨어를 빠르게 만들기 위해 노력합니다. 그래서 저는 Rust 빌드 시간이 그들이 주장하는 것만큼 나쁜지 직접 확인하기로 했습니다. 계획은 다음과 같습니다.

오픈 소스 C++ 프로젝트를 찾습니다.
프로젝트의 일부를 자체 미니 프로젝트로 분리합니다.
C++ 코드를 한 줄씩 Rust로 다시 작성하세요.
C++ 프로젝트와 Rust 프로젝트 모두에 대해 빌드를 최적화합니다.
두 프로젝트 간의 컴파일+테스트 시간을 비교합니다.

...(생략)...
---

728x90

아무튼, 해당 웹페이지를 읽어보니깐요...여러가지 궁금증이 풀렸고요...참 감사하게도 잘 정리해두셨더라고요...

아무튼, 해당 웹페이지의 주요내용을 요약해보면 아래와 같고요..

포팅하는 기준

  • 3자 라이브러리 제외
  • Linux 및 macOS에서 작업
  • 광범위한 test suite
  • FFI, 포인터, 표준 및 직접 작성한 컨테이너, 유틸리티 클래스 및 함수, I/O, 동시성, 제네릭, 매크로, SIMD, 상속, ...

결론

  • Rust의 컴파일 시간은 C++과 비슷하거나 느림(적어도 이 프로젝트에서는)
  • Rust가 C++보다 더 많은 코드를 작성해야 함
  • 전체(Full) 빌드에서 C++이 비슷하거나 빠름
  • 증분(Incremental) 빌드에서는 짧을 때도 있고 길 때도 있음(아주 긴 경우도 있음)
  • quick-lint-js의 나머지는 Rust로 포팅하지 않기로 결정(빌드 시간 개선이 있다면 할 수도?)

좀 더 자세한 내용은 아래 웹페이지를 방문해 보시길 추천드립니다. 

오늘의 블로그는 여기까지고요..
항상 믿고 봐주셔서 감사합니다. 

앞으로도 더 좋은, 더 유익한 컨텐츠를 가지고 찾아뵐께요~~

728x90
300x250