报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

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

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

关注

评论

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

【YashanDB知识库】Flink CDC实时同步Oracle数据到崖山

YashanDB

数据库 yashandb

国产AI生态新突破!“息壤”+DeepSeek王炸组合来了!

天翼云开发者社区

人工智能 AI 大模型 智算中心 DeepSeek

Uber Go 编程风格指南

FunTester

前端怎么做好稳定性保障体系建设?精准搞定“白虎”,不用叫“广智”!

京东零售技术

【YashanDB知识库】Kettle迁移PostgreSQL到YashanDB

YashanDB

数据库 yashandb

【YashanDB知识库】MySQL返回结果集的存储过程的改写方法

YashanDB

数据库 yashandb

“爆款”批量生成,如何实现一键创作 AI 有声绘本?

阿里巴巴云原生

阿里云 云原生

阿里巴巴热卖商品推荐 API 接口的开发、应用与收益

科普小能手

数据挖掘 阿里巴巴 数据分析 电商 API 接口

火语言RPA--变量序列化

火语言RPA

使用 Apifox、Postman 测试 Dubbo 服务,Apache Dubbo OpenAPI 即将发布

阿里巴巴云原生

阿里云 云原生

【YashanDB知识库】Kettle迁移MySQL到YashanDB

YashanDB

数据库 yashandb

智能理解 PPT 内容,快速生成讲解视频

阿里巴巴云原生

阿里云 云原生

【YashanDB知识库】沙箱备库

YashanDB

数据库 yashandb

应届生如何高效备战春招?

王中阳Go

春招

机械加工生产管理的难点与MES系统的解决方案

万界星空科技

制造业 mes 万界星空科技mes 机械加工 机械加工mes

DeepSeek登场:软件测试的「工业革命」与工程师的「进化论」

测试人

人工智能

轻帆云ITSM大模型底座支持接入DeepSeek-R1,AI能力再升级

云智慧AIOps社区

ITSM ITSM软件 工单管理 工单系统 智能工单

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