AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

基于 Clang 的缓存型 C++ 编译器 Zapcc 开源

  • 2018-06-26
  • 本文字数:796 字

    阅读完需:约 3 分钟

Zapcc 是一个缓存型C++ 编译器,基于Clang/LLVM 的一个分支创建,据称重编译的速度快50 倍,完整构建的速度快2 到5 倍。由Creemple 开发,最初在2015 年底发布,Zapcc 现在开源了。

Zapcc 编译速度提升主要是因为使用了一个编译服务器(zapccs),该服务器驻留在内存中,从客户端接收编译命令。Zapccs 仅解析 C++ 头文件一次,并把所有模板实例和生成的代码都保留在内存中。在这一方面,可以把 Zapcc 视为是以更极端的方式使用了预编译的头文件,但是,它可以获得的信息比预编译头文件多得多,而且又不需要让预编译头文件发挥作用的所有设置。

在处理十分复杂的C++ 头文件,尤其是那些使用了模板的头文件时,与Clang 相比,Zapcc 特别快。因此,也就不用奇怪,在构建 boost::math时 Zapcc 的速度是 Clang 的 40 倍,在WebKit 完整构建时快4 倍,在Clang 完整构建时快2 倍。类似地,在增量重编译时,Zapcc 比Clang 快50 倍。另一方面,当源文件比头文件复杂很多时,Zapcc 就提供不了多少好处了,纯C 项目对于Zapcc 而言是最坏的情况,根本就不能提升速度。实际上,Zapcc 禁止缓存C 文件。

据Creemple 介绍,由Zapcc 生成的代码其运行时性能和由Clang 生成的代码一样。

zapccs使用的内存数量是决定整体性能的一个重要因素。Zapcc 允许开发人员设置内存限值,当达到限值时,zapccs会使用一个空的缓存自动重启。如果找不到可用的服务器实例,那么Zapcc会设法启动一个新的服务器实例,开发人员可以使用-j标识控制并发服务器最大数量。根据项目的复杂度,服务器较少而内存限值较高时,Zapcc 可能运行得更快。

据项目主要开发者 Yaron Keren 介绍, Zapcc 是经过重大修改的 Clang ,修改超过 20 万行。我们不认为它有一天会进入 CLang 基线。Zapcc 意在取代 Clang 和 gcc,其目标是与所有构建系统集成。它获得了 Linux x64 的完全支持。

查看英文原文: Caching Clang-Based C++ Compiler Zapcc Open-Sourced

2018-06-26 05:341853
用户头像

发布了 1008 篇内容, 共 423.2 次阅读, 收获喜欢 346 次。

关注

评论

发布
暂无评论
发现更多内容

Partisia Blockchain的MOCCA方案,资产托管领域的全新范式

石头财经

天润融通引领AI大模型应用,助力企业客户感知升级

天润融通

人工智能 AI 天润融通

系统运维联盟 5 月会议召开,围绕“进展、规划与合作”展开讨论

OpenAnolis小助手

操作系统 龙蜥社区系统运维联盟

Python 中寻找列表最大值位置的方法

霍格沃兹测试开发学社

线上观看人次2万+!「飞天技术沙龙-CentOS 迁移替换专场」北京站圆满结束

OpenAnolis小助手

操作系统 龙蜥社区 CentOS迁移 Alibaba Cloud Linux Anolis OS

发掘 Chrome 的实用命令:提升你的浏览器使用体验

霍格沃兹测试开发学社

世界经合组织(OECD)认为德国在人工智能领域处于全球领先地位

财见

30天拿下Rust之unsafe代码

希望睿智

rust unsafe

数智领航 云启未来|华为云618营销季全面启动

YG科技

MES生产车间物料如何管理才能降本增效?

万界星空科技

生产管理系统 mes 万界星空科技 物料管理 生产物料

java抽象类与接口的区别

小曾同学.com

接口 java\ 抽象类

连续五年稳坐中国第一,天润融通助力锐捷网络重塑客户服务新篇章

天润融通

人工智能 AI 天润融通

Partisia Blockchain的MOCCA方案,如何成为资产托管最优解?

股市老人

SSH 简介:安全远程访问的利器

霍格沃兹测试开发学社

利用机器学习助力发动机舱电磁场强仿真,实现快速预测

Altair RapidMiner

机器学习 数据分析 #人工智能

使用Python进行网络数据可视化的多种方法与技巧

我再BUG界嘎嘎乱杀

Python 可视化

奥迪运动通过 trinckle 软件和 UltiMaker 3D 打印机加速设计和生产流程

财见

30天拿下Rust之图形编程

希望睿智

rust 图形软件

一文读懂Partisia Blockchain 的MOCCA方案:资产托管的最优解

BlockChain先知

30天拿下Rust之高级类型

希望睿智

rust 类型

Partisia Blockchain的MOCCA方案,资产托管领域的全新范式

股市老人

Playwright执行 JavaScript 脚本:探索浏览器自动化的新境界

霍格沃兹测试开发学社

大模型产品化,不过是三支舞

脑极体

AI

相聚杭州,53 位代表参会!龙蜥社区两大委员会圆满结束

OpenAnolis小助手

操作系统 龙蜥社区

社区新标准发布!龙蜥社区标准化 SIG MeetUp 圆满结束

OpenAnolis小助手

标准化 龙蜥meetup 龙蜥社区标准化SIG

哈银消费金融端午节金融知识普及,守护消费者权益,助力智慧消费!

极客天地

【三体学者】著名的黑暗森林理论是什么含义?

AppBuilder

实现Python日志点击跳转到代码位置的方法

霍格沃兹测试开发学社

探索Vue.js:从基础到进阶

霍格沃兹测试开发学社

基于Clang的缓存型C++编译器Zapcc开源_开源_Sergio De Simone_InfoQ精选文章