ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

如何提高大型工程的编译速度?

2021-05-20 23:07:19  阅读:459  来源: 互联网

标签:Java 工程 compilation 编译 Objective 分布式 大型 compiler


这里的大型工程是指源代码个数超过1万以上的c/c++或者java的混合工程,而android AOSP就是这样一个很贴切的例子。android整个系统的编译非常耗时,动辄一个小时以上,搜索了一下关于提高编译速度的相关资料,可以从以下几方面入手。

  • 提高编译系统的硬件能力
    首先能够想到的肯定是提高编译机的硬件能力,例如cpu、内存、硬盘等。

  • 使用ccache
    ccache is a compiler cache. It speeds up recompilation by caching previous compilations and detecting when the same compilation is being done again. Supported languages are C, C++, Objective-C and Objective-C++.
    ccache适用于c、c++、Objective-C 、Objective-C++。

  • 更换Java编译器
    例如Eclipse compiler的速度就要快于oracle的javac,下面的文章介绍了javac和eclipse中java编译器的不同点。
    http://stackoverflow.com/questions/3061654/what-is-the-difference-between-javac-and-the-eclipse-compiler

  • 分布式编译
    c/c++等语言可以使用distcc工具进行分布式编译,
    distributed builds for C, C++ and Objective C。
    https://github.com/distcc
    但是目前还没找到活跃的Java相关的分布式编译工具,有人写了个类似的Java分布式编译的工具,可以借鉴该思想。
    http://www.pointdefence.net/jarc/index.html
    Hello, I have attempted to build a remote compiler based on standard Java SE API [>1.6] http://java.sun.com/javase/6/docs/api/ and RMI, primarily to experiment with these technologies, and secondly to see if I could move the burden of CPU intensive operation of compilation away from the development environment or production hosts (in the case of dynamic compilation). Pushing the compilation task across the network may reduce negative impact on other applications i.e. free up computation power for more important tasks, checking email, performing business logic and serving other clients for example.

在我认为,像AOSP这种动辄数万个c、java源文件的工程中,编译速度主要和AOSP系统编译架构、磁盘IO、编译机硬件处理能力(cpu/ram等)有很大的关系。在单台机器硬件瓶颈或者考虑成本的情况下,分布式编译应该还是可以相应提高编译速度的,特别是如果在局域网中搭建分布式环境,这时网络延时会比较小,分布式数据的传输延时较小,将整个系统的编译任务分布到多个局域网中的编译机上进行编译会大大提高编译的速度。

具体能够减少多少的编译时间,还待后续的研究。

标签:Java,工程,compilation,编译,Objective,分布式,大型,compiler
来源: https://blog.51cto.com/u_15147256/2799137

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有