Reducing C++ Compilation Times Through Good Design - Andrew Pearcy - ACCU 2024

preview_player
Показать описание
---

Reducing C++ Compilation Times Through Good Design - Andrew Pearcy - ACCU 2024
---

Continuous integration and continuous deployment (CI/CD) have become industry standard. Being able to quickly change, verify, and deploy code provides a rapid time-to-market and encourages smaller changesets, narrowing the scope for potential bugs. However, this framework relies on the continuous integration pipeline being fast and the developer feedback cycle being short. As a project grows, its compilation time naturally increases. Left unchecked, a project's compilation time can balloon to the point where it impedes the developer feedback loop.

We found ourselves facing excessive build times that were significantly slowing down our software development life cycle. Using open source tools, we profiled our compilation and identified exactly which files, constructs, and design choices had led to these increased build times. Find out how we reduced our compilation time 10-fold through a series of concrete examples.

Sponsored By think-cell & Bloomberg Engineering
---

Andrew Pearcy

Andrew Pearcy has spent the last four years developing Bloomberg’s financial risk products. As a full stack developer, he has delivered multiple complex projects in the financial domain to enhance the flexibility, scalability, and efficiency of Bloomberg’s Derivative Hedging Accounting solution. As part of these enhancements, he has modernised, restructured, and refactored projects, striving to constantly improve the developer experience and reduce the time-to-market of this solution.
---

The ACCU Conference is the annual conference of the ACCU membership, but is open to any and all who wish to attend. The tagline for the ACCU is 'Professionalism in Programming', which captures the whole spectrum of programming languages, tools, techniques and processes involved in advancing our craft. While there remains a core of C and C++ - with many members participating in respective ISO standards bodies - the conference, like the organisation, embraces other language ecosystems and you should expect to see sessions on C#, D, F#, Go, Javascript, Haskell, Java, Kotlin, Lisp, Python, Ruby, Rust, Swift and more.The ACCU Conference is a conference by programmers for programmers about programming.
Discounted rates for members.
---

#accuconf #programming #cplusplus #cppprogramming #softwaredevelopment
Рекомендации по теме
Комментарии
Автор

Excellent talk. Pretty much essential material for software at scale.

tomkirbygreen
Автор

On the "macros are evil" bit where "#define WIDGET 7" messed up other code, we sometimes used wrapping headers that #undef'd macros we didn't want to leak out, or did it in source code. This originally was in the context of making some code cross-platform where Windows or Apple headers liked to define very common names for their constants, so platform-specific code would use the raw header, but public code in our project used the wrapping headers. I think Unreal does this as well, and I wouldn't be surprised to see this in older Unix cross-platform projects.

bfitzger
Автор

Restrict your use of header only libraries and templates in API boundaries, use PIMPL and forward declaration and you are fine.

llothar
Автор

Will lld or mold improve build time with whole program optimizations enabled?

tlacmen
Автор

Does anyone understand what he meant with "more granular" regarding the protobuf issue? (23:45)

TalJerome
Автор

Anyone remember Turbo Pascal?
Remember how fast it was? Remember the _hardware_ that it ran on?
Yeah. We've got a _lot_ of catching up to do.
There is zero reason the executable can't be ready some milliseconds after a character has changed in the code.
That THE ENTIRE SOURCE is worked on, as if it has never been seen before, every time a build is started is comical.

GeorgeTsiros