写点什么

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

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

关注

评论

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

我是学生,申请加入!KubeBlocks 首次参与开源之夏,前沿技术、丰厚奖金、大牛导师等你来!

小猿姐

开源

如何通过ETL工具对数据进行去重

RestCloud

数据处理 ETL 数据去重 ETLCloud

Pencil 积分:打开 Pencils Protocol 生态权益大门的钥匙

石头财经

探索大语言模型:理解Self Attention

京东科技开发者

探秘jd.item_search_img:京东按图搜索商品API返回值全攻略

技术冰糖葫芦

API 文档 API 策略 pinduoduo API

今日分享丨从简单传输到大文件分片上传

inBuilder低代码平台

文件传输 传输工具

谈谈 Spring 的过滤器和拦截器

快乐非自愿限量之名

Java spring 后端

Python环境部署及虚拟环境部署

我再BUG界嘎嘎乱杀

Python 编程语言 后端

Databend 开源周报第 144 期

Databend

数据仓库

经验分享:春招零Offer,5月份还有机会吗?

王磊

Java 面试

TikTok直播专线:为海外直播加速,打造极致用户体验

Ogcloud

TikTok tiktok运营 tiktok直播 tiktok直播网络

vue3编译优化之“静态提升”

EquatorCoco

JavaScript vue.js 前端

AWS ECS On Fargate 监控可观测最佳实践

观测云

AWS

一文读懂 Pencil 积分,打开 Pencils Protocol 生态权益大门

BlockChain先知

开源之夏又有新项目发布!快来认领!¥12,000 奖金等你来!

小猿姐

开源 开源项目

画像系统人群服务数据存储架构的演进与创新| 京东云技术团队

京东科技开发者

Qualcomm QCA9531 and QCA9880: The core and pioneer in network devices

wifi6-yiyi

wifi

一文读懂Pencils Protocol Valut的收益叙事:一鱼多吃

大瞿科技

高并发-1-压力预估

Jxin

高并发 流量预测 容量规划

打破体育赛事直播平台的“圈层”:开发新增电竞、趣猜、积分商城

软件开发-梦幻运营部

云手机海外版在海外市场的应用场景有哪些

Ogcloud

云手机 海外云手机 云手机海外版 国外云手机 电商云手机

破局留存困境,巧用融云“用户在线状态”提升陌生人社交效率

融云 RongCloud

推荐几款火爆的Python在线编辑器

快乐非自愿限量之名

Python 编辑器 在线编辑器

QCA9880 vs QCA9882: A Performance Comparison and Buying Guide

wallyslilly

QCA9880 QCA9882

测试实践-测试范围分析| 京东云技术团队

京东科技开发者

Go-Zero定义API实战:探索API语法规范与最佳实践(五)

王中阳Go

Go golang 微服务 gozero

【IoTDB 线上小课 03】时序数据库 VS 实时数据库,区别是?

Apache IoTDB

仿真云技术的5个应用场景

3DCAT实时渲染

实时渲染 云仿真 仿真云

[版本更新] PolarDB-X V2.4 列存引擎开源正式发布

阿里云数据库开源

数据库 阿里云 PolarDB-X

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