Any developer of a large project runs into increase of compilation time at least once a year. It is especially inconvenient if you use continuous integration, which presupposes frequent recompilation and other related activities. Long compilation becomes a bottleneck that narrows down all advantages of continuous integration. At some moment simple increase of machine capacity gives less effect and an complex problem solution is needed.
Optimization problems were faced in the process of engineering and further development of a large manifold application. Successfully combining different approaches, we managed to significantly decrease the time of software compilation and retain it on a reasonable level despite its active growth. The report will address variants of complex solution allowing to optimize large project compilation.
Compiler default configuration allowing to parallelize compilation and/or linking, use of precompiled headers and similar optimization methods are well described in documents. The report will focus on comprehensive approaches, which in some cases can be applied regardless of a compiler or programming language.
Main issues of the report:
- automation of unitybuild with the help of the CMake system and peculiarities of its application regarding server’s hardware configuration;
- best practices of clcache usage and its optimal combination with other approaches;
- peculiarities of the above mentioned technologies in case of distributed computing;
- advantages and disadvantages of build server virtualization — performance vs scalability and fault-tolerance;
- analysis of impact of disk transfer speed – SSD RAID 0 vs RAM-Disk.
Victor Strelkov
Head of Research and Quality Control Department
In 2007 started working at Positive Technologies. He founded a subdivision responsible for the supporting the company’s development infrastructure and now successfully manages it. Among the key goals: automation of the processes of developing, building and deploying the existing projects of the company; implementation of a unitary ALM system; process level implementation and providing hardware support for advanced software development processes (including Continuous Integration, Code Review, Test Driven Development, Feature Driven Development).
Viktor Strelkov delivered a report at Application Developer Days Conference.
Mr. Strelkov now prefers adaptable methods and technological aspects of their maintenance in distributed commands.
Pingback: Новости » Blog Archive » Оптимизация сборки крупного проекта