写点什么

基于 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:341520
用户头像

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

关注

评论

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

从网站安全说起,华为云为何能成为政企的“好伙伴”

IT科技苏辞

相约用友BIP技术大会,用友iuap带您玩转数据智能

用友BIP

技术大会 用友iuap 数智化底座

支撑百万商户、千亿级调用:微盟如何通过链路设计降本40%?

TakinTalks稳定性社区

华为云全流程等保服务,帮助企业守护信息安全

科技怪授

护航信息安全,就看华为云网站安全方案

爱尚科技

“930大促”日活增速超40% ,哈啰如何用预案高效应急?

TakinTalks稳定性社区

瑞云科技副总经理黄金进受邀出席2023广东超聚变生态伙伴大会并作主题演讲

3DCAT实时渲染

元宇宙 实时渲染 云流化 3D实时云渲染 云化XR

低代码起势,程序员闷头开发的日子结束了

引迈信息

低代码 快速开发 JNPF

为企业发展赋能,华为云网站安全解决方案,保护企业网络安全

科技怪授

阿凡达Sun4.0众筹开发系统技术搭建

薇電13242772558

NFT

一篇文章了解SoapUI接口测试的全部流程

Liam

测试 接口测试 测试工具 API 测试

未来源码|什么是数据集成?超全的SeaTunnel 集成工具介绍

MobTech袤博科技

过去的90天,ODC 发生了哪些新的改变?

OceanBase 数据库

数据库 oceanbase

为什么FTP会随着时间的过去而变慢?

镭速

瓴羊Quick BI与网易有数,看国产BI工具如何起势

夏日星河

新一代异步IO框架 io_uring | 得物技术

得物技术

研发运维双管齐下!Seal AppManager的正确打开方式

SEAL安全

企业号 4 月 PK 榜 Seal软件 SealAppManager

探究光明源智慧公厕系统的科技创新与管理优势

光明源智慧厕所

智慧城市

九科信息RPA产品bit-Worker通过信创产品评估

九科Ninetech

多云之下,京东云的降本增效之道

人称T客

Wallys/IPQ5018 and QCN6122: The Future of Wireless Networking

Cindy-wallys

ipq5018 QCN6102 QCN6122

「ChatGPT最强竞品」爆火:不限量不要钱免注册!一手实测体验在此

Openlab_cosmoplat

人工智能 开源社区 openai ChatGPT

求助 iOS 分发的最佳实践

雪奈椰子

阿里云计算巢产品负责人何川:计算巢,通过数字化工具加速企业数字原生

云布道师

云计算 计算巢

杨志丰:一文详解,什么是单机分布式一体化?

OceanBase 数据库

数据库 oceanbase

使用appuploader工具发布证书和描述性文件教程

雪奈椰子

防止网页防篡改,华为云网站安全方案省心又省力

爱尚科技

落地“旅游+”数字赋能:实现智慧旅游协同创新发展

加入高科技仿生人

低代码 数字化 旅游业 数字转型

BNB代币燃烧模式dapp系统开发合约详情

开发v-hkkf5566

软件测试/测试开发丨Python 算法与数据结构面试题

测试人

软件测试 面试题 测试开发

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