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:341587
用户头像

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

关注

评论

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

2023年中国国民家庭阅读白皮书

易观分析

家庭 阅读

LlamaIndex 联合创始人下场揭秘:如何使用私有数据提升 LLM 的能力?

Zilliz

Milvus Zilliz LLM zillizcloud llamaindex

C语言编程—常量

芯动大师

Scrum进入疲惫期?三点帮你走出困境

敏捷开发

Scrum 敏捷开发 软件开发 Scrum Master 疲倦期

Golden Gate (GGX) 启动公测,下一代创新DeFi和跨链 dApps 征程开始

股市老人

2023-05-18:有 n 名工人。 给定两个数组 quality 和 wage , 其中,quality[i] 表示第 i 名工人的工作质量,其最低期望工资为 wage[i] 。 现在我们想雇佣

福大大架构师每日一题

Go 算法 rust

Django笔记三十一之全局异常处理

Hunter熊

Python django 异常处理 全局异常

全球首款通过HDR Vivid认证的平板发布,华为视频全场景观影体验再升级

最新动态

异常体系与项目实践

Java 架构

IDO&IEO盘点,包括PoseiSwap等即将面向市场的潜力打新活动

股市老人

HashMap 底层是如何实现的?

javacn.site

java面试

《好好学习》:如何管理知识?

郭明

展会回顾 | 2023元宇宙生态博览会圆满落幕,3DCAT荣获“元宇宙交互技术奖”

3DCAT实时渲染

元宇宙 实时云渲染 实时渲染云

从 DevOps 到平台工程:软件开发的新范式

SEAL安全

DevOps 软件研发 平台工程

BATJ架构师首推!分布式事务原理与实战,出神入化

程序知音

Java 分布式 java架构 Java进阶 后端技术

OpenCloudOS 如何基于 eBPF 实现容器级别的TCP 连接监控?

OpenCloudOS

Linux

开通 ChatGPT Plus 的一些经验分享(66/100)

hackstoic

ChatGPT

发现你的职业价值观:打造成功职业生涯的关键

Jack

云原生可观测性的几大误区

Yestodorrow

云原生 APM 监控 可观测性

标签系列:标签管理平台的架构与设计

Taylor

数据 标签 数据管理 标签体系

如何一行代码实现 OpenAI 可观测,大幅提升使用体验

观测云

云计算 可观测 观测云 ChatGPT 可观测性用观测云

做实大模型的产业价值,度小满深耕“NLP+金融”

脑极体

金融 nlp 度小满

IDO&IEO盘点,包括PoseiSwap等即将面向市场的潜力打新活动

BlockChain先知

奋楫扬帆 津鸿智放丨中软国际携手深开鸿亮相第七届世界智能大会

科技热闻

高级修图软件:Affinity Photo中文Mac版

真大的脸盆

Mac 图像处理 图像编辑 编辑图像 处理图像工具

Cloud Studio 有“新”分享

CODING DevOps

Maven PKIX path building failed 错误提示

HoneyMoose

全屋智能,始终在等一双“究极手”

脑极体

智能家居

JavaScript中eval和with语句如何影响作用域链:探索深度知识

Immerse

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