写点什么

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

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

关注

评论

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

React 中五种常见的使用样式

编程江湖

React

安装VTK配置出现错误

Ayosh

qt

HBase 优化如何操作

编程江湖

HBase

云计算厂商们,你们辜负了中国的用户

码农一米

云计算 云服务

绥北人民法院:用宜搭打造“线上法庭”,让群众少跑腿

一只大光圈

低代码 数字化转型 法院 钉钉宜搭

「offer来了」面试中必考的15个html知识点

星期一研究室

html html5 css3 前端 html/css

基于机器学习和TFIDF的情感分类算法,详解自然语言处理

华为云开发者联盟

自然语言处理 机器学习 算法 TFIDF 情感分类

自创解法!setTimeout+Promise+Async输出顺序?简单的一匹!!

Sunshine_Lin

面试 前端 ES6 Promise Async

Linux之目录结构

入门小站

【MongoDB学习笔记】MongoDB索引那点事

恒生LIGHT云社区

数据库 mongodb 索引

Dumpling 导出表内并发优化丨TiDB 工具分享

PingCAP

2021年度总结,欲望反光

程思扬

经验分享 #总结# 经验总结 盘点 2021

“千言”开源数据集项目全面升级:数据驱动AI技术进步

百度大脑

人工智能

Java开发之SSM框架整合配置知识分享

@零度

ssm JAVA开发

docker

Docker jenkins pipeline

Greenplum 内核源码分析 - 分布式事务 (五)

王凤刚(ginobiliwang)

源码分析 greenplum 分布式式事务

如何解决JDBC死链接导致NIFI线程假死

编程江湖

甲方,你们愿意被乙方侮辱吗?

码农一米

云计算 云服务

VRAR产业峰会暨第二届华为VR开发应用大赛颁奖典礼在和平区成功举办!

华为云开发者联盟

云计算 5G AR 华为云 vr

一图解析MySQL执行查询全流程

华为云开发者联盟

MySQL 服务器 数据包 查询语句 应用层

网络安全好学吗?手把手教你学metasploit 网络安全工程师学习资料汇总

学神来啦

带你认识传统语音识别技术

华为云开发者联盟

语音识别 语言模型 声学模型 隐马尔可夫链 WFST解码

前端培训:React Native 开发过程中遇到的坑

@零度

前端开发 ​React Native

大数据培训:hadoop中shuffle过程面试题

@零度

大数据 hadoop Shuffle

【直播预告】全国人工智能大赛赛题讲解直播来啦!1月6日晚20点,不见不散!

OpenI启智社区

人工智能大赛

Stellantis集团将于2022CES展期间召开网络直播发布会

InfoQ_967a83c6d0d7

使用APICloud开发app的性能提升实践

YonBuilder低代码开发平台

android APP开发 APICloud 跨端开发 app性能

百度飞桨EasyDL桌面版正式上线,没网也能训练AI!

百度大脑

人工智能

微信小程序获取位置信息

程思扬

小程序 小程序云开发 开发者 开发 小程序生态

阿里巴巴集团副总裁贾扬清-一个AI开发者的奇幻漂流

大咖说

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