AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

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

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

关注

评论

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

敞开大门的支付宝,是商家的新掘金地吗?

ToB行业头条

Okaleido上线聚变Mining模式,OKA通证当下产出的唯一方式

鳄鱼视界

中文起,Python 字体反爬实战案例,再一点

梦想橡皮擦

Python 爬虫 7月月更

大数据课程培训和自学哪个比较适合?

小谷哥

看了这么多Python教程,最香的还得是……

博文视点Broadview

华为被迫开源!从认知到落地SpringBoot企业级实战手册(完整版)

程序猿阿宇

Java 程序员、 秋招 构架 面试‘

众人呼唤的 Java 单商户系统,究竟有什么过人之处?

CRMEB

大数据开发课程怎么学?

小谷哥

kafka的Docker镜像使用说明(wurstmeister/kafka)

程序员欣宸

kafka 7月月更

第五届数字中国建设峰会举行,每日互动发布每日治数平台DIOS创新成果

个推

大数据 数据中台 数据智能 每日治数平台

阿里云技术专家邓青琳:云上跨可用区容灾和异地多活最佳实践

阿里云弹性计算

异地多活 多活容灾

2022秋招,Java岗最全面试攻略,吃透25个技术栈Offer拿到手软

程序猿阿宇

Java 面试题 面经 Java工程师 秋招

用GaussDB(for Redis)存画像,推荐业务轻松降本60%

华为云开发者联盟

数据库 redis 存储 GaussDB ( for Redis ) 用户画像

华为2023届提前批预热开始!左 神的程序代码面试指南终派上用场

程序猿阿宇

Java 算法 后端 Java工程师 算法刷题

微软Azure和易观分析联合发布《企业级云原生平台驱动数字化转型》报告

易观分析

数字化转型

web前端开发技术学习比较靠谱

小谷哥

Kyligence 入选 Gartner 2022 数据管理技术成熟度曲线报告

Kyligence

sql查询 Gartner

我写的dubbo扩展jar包如何无侵入的给别人使用

石臻臻的杂货铺

7月月更

产品动态丨Android 13 高效适配全新升级

MobTech袤博科技

android

Okaleido生态核心权益OKA,尽在聚变Mining模式

股市老人

物理防火墙是什么?有什么作用?

行云管家

网络安全 防火墙

CircleIndicator组件,使指示器风格更加多样化

OpenHarmony开发者

OpenHarmony

基于Netty,从零开发IM(四):编码实践篇(系统优化)

JackJiang

网络编程 Netty 即时通讯 im开发 开源im

如何把css渐变背景玩出花样来

南极一块修炼千年的大冰块

7月月更

想要做好软件测试,可以先了解AST、SCA和渗透测试

华为云开发者联盟

云计算 安全 软件测试 后端 开发

字节一面:TCP 和 UDP 可以使用同一个端口吗?

程序员小毕

Java 程序员 面试 TCP 计算机网络

行云管家V6.5.1/2/3系列版本发布:数据库OpenAPI能力持续强化

行云管家

数据库 版本 IT运维 行云管家

兆骑科创海内外高层次创新创业人才服务平台,双创成果转化平台

兆骑科创凤阁

基于Caffe ResNet-50网络实现图片分类(仅推理)的实验复现

华为云开发者联盟

人工智能 推理 昇腾 处理器

怎么才能提高自己web前端技术呢?

小谷哥

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