QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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

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

关注

评论

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

解决方案| anyRTC远程检修应用场景

anyRTC开发者

人工智能 音视频 视频会议 远程协助 电话会议

国产化操作系统有哪些?适配国产化操作系统堡垒机哪款好用?

行云管家

信创 堡垒机 国产化 国产操作系统 国产

预告!网络安全红队GPT大模型训练直播来袭

云起无垠

华秋亮相第五届模拟半导体大会,助力电子行业高质量发展

华秋电子

PCB

最适合做缺陷跟踪管理的8款工具

爱吃小舅的鱼

缺陷管理 bug管理 bug管理工具

Canvas 低代码工具,多人自研开发全流程优化|ModelWhale 版本更新

ModelWhale

云计算 Jupyter Notebook canvas 数据驱动 在线编程

如何在Blender中压缩/减小GLTF模型的大小

3D建模设计

blender GLTF

华为云CodeArts Check代码检查服务用户声音反馈集锦(1)

华为云PaaS服务小智

云计算 软件开发 华为云

5 个适合出海离岸公司的地区推荐

出海的猹

出海企业

区块链集成:加密货币网站开发的必备条件

区块链软件开发推广运营

数字藏品开发 dapp开发 区块链开发 链游开发 NFT开发

华为云ROMA Connect亮相Gartner®全球应用创新及商业解决方案峰会,助力企业应用集成和数字化转型

华为云PaaS服务小智

云计算 华为云 峰会

【重磅】《中台技术财务应用蓝皮书》正式发布

用友BIP

智能财务

如何将 OBJ 模型转换和压缩为 GLTF 以与 AWS IoT TwinMaker 配合使用

3D建模设计

GLTF

医院如何实现安全又稳定的跨网文件数据交换呢?

镭速

跨网文件数据交换

应用商店备案登记流程解析

雪奈椰子

“敏捷教练必修课程”10月14-15日 ·A-CSM认证在线周末班【提前报名特惠】CST导师亲授

ShineScrum

Premiere Pro 2022 for Mac(pr)更新字幕转换包 v22.6.2永久激活版

mac

pr2022 苹果mac Windows软件 视频编辑软件 ​Premiere Pro 2022

【ODPS新品发布第1期】DataWorks全新发布:增强分析/数据建模个人版等新能力

阿里云大数据AI技术

大数据 阿里云

GLTF-pipeline

3D建模设计

gltf编辑器

glTF 中基于物理的渲染(PBR)

3D建模设计

财务共享中心进行数据服务应该从哪里入手?

用友BIP

财务共享

HarmonyOS NEXT带来的DevEco Profiler助您轻松分析应用性能问题

Geek_2d6073

莆田市属于哪个省?有正规等保测评机构吗?

行云管家

等保 等保测评 等保等级保护

程序设计之——手把手教你如何从Excel文件中读取学生信息

飞算JavaAI开发助手

告别烟囱式建设,DT时代同样需要操作系统

Geek_2d6073

OpenCloudOS + 英特尔第四代至强处理器:完美适配,加速未来

OpenCloudOS

Linux intel

HarmonyOS应用侧与前端页面数据通道建立

HarmonyOS开发者

HarmonyOS

9.19-21,openEuler与您相约2023欧洲开源峰会

openEuler

Linux 开源 操作系统 openEuler

北京大上科技发布全球首款25.3英寸彩色墨水屏显示器

硬科技星球

用友BIP资产云携手洋井石化,打造行业领先的智慧资产管理系统

用友BIP

资产云

鸿蒙开发套件之DevEco Profiler助您轻松分析应用性能问题

HarmonyOS开发者

HarmonyOS

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