写点什么

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

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

关注

评论

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

【Java入门】交换数组中两个元素的位置

SoFlu-JavaAI开发助手

代码 java; 程序员‘’ 软件开发、

度小满CTO许冬亮:大模型时代需警惕中小金融机构“技术掉队”

科技热闻

Mybatis sql参数自动填充

源字节1号

开源 软件开发 前端开发 后端开发 小程序开发

专业开发矿机挖矿系统模式|区块链DAPP挖矿模式开发

V\TG【ch3nguang】

如何使用极狐GitLab 支持 ISO 27001 合规

极狐GitLab

DevOps gitlab ISO 组织控制 技术控制

现成直播拍卖软件源码,搭建开发上线资料

软件开发-梦幻运营部

软件测试/测试开发丨venv 环境管理 学习笔记

测试人

软件测试 虚拟环境 venv

和鲸科技:国家气象信息中心人工智能气象应用基础支撑技术平台正式上线

ModelWhale

人工智能 AI 气象 地球科学 国家气象中心

华为Mate 60抢火车票也“遥遥领先”,负一屏抢票享满减!

最新动态

挖矿矿机系统APP开发平台

V\TG【ch3nguang】

又一重磅利好来袭!Zebec Payroll 集成至 Nautilus Chain 主网

威廉META

又一重磅利好来袭!Zebec Payroll 集成至 Nautilus Chain 主网

鳄鱼视界

区块链矿机挖矿钱包系统app开发

V\TG【ch3nguang】

XR扩展现实的最新趋势-云流化技术

3DCAT实时渲染

云流化 CLOUDXR

企业如何高效平滑迁移数据?火山引擎DataLeap上线整库搬迁解决方案

字节跳动数据平台

数据中台 数据治理 数据安全 数据研发 企业号9月PK榜

PWA V.S. 小程序,该如何选?

FinFish

小程序容器 PWA 小程序技术 小程序容器技术

又一重磅利好来袭!Zebec Payroll 集成至 Nautilus Chain 主网

BlockChain先知

快速加入Health Kit,一文了解审核流程

HarmonyOS SDK

huawei HarmonyOS

极狐GitLab CI x Vault,做好企业密钥安全合规管理

极狐GitLab

gitlab cicd 安全 cli vault

关于TPM营销费用管理,品牌快消企业最关心的问题都在这里

赛博威科技

营销数字化 投资分析 数字营销 营销管理 预算管理信息化

打造高能低碳电脑,英特尔与合作伙伴都做了什么?

E科讯

Serverless 数仓技术与挑战 - 张雁飞|3306π

Databend

又一重磅利好来袭!Zebec Payroll 集成至 Nautilus Chain 主网

石头财经

打造次世代分析型数据库(三):列存表最佳实践

腾讯云大数据

数据库

JetBrains推出RustRover 为开发者打造更高效易用的Rust IDE

科技热闻

DAPP 开发区块链技术分析

V\TG【ch3nguang】

LeetCode题解:1720. 解码异或后的数组,异或,JavaScript,详细注释

Lee Chen

JavaScript LeetCode

抖音开放平台上线新能力!延伸内容价值助力开发者高效获客

科技热闻

Filecoin挖矿系统开发技术讲解

V\TG【ch3nguang】

又一重磅利好来袭!Zebec Payroll 集成至 Nautilus Chain 主网

股市老人

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