写点什么

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

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

关注

评论

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

2022年一站式服务器管理软件就用行云管家!

行云管家

云计算 服务器 IT运维 服务器管理

手把手教你使用 Timestream 实现物联网时序数据存储和分析!

亚马逊云科技 (Amazon Web Services)

Data

Amazon Aurora 并行查询——加速分析处理的利器

亚马逊云科技 (Amazon Web Services)

Data

Atlassian 被 Forrester Wave 评选为企业服务管理的领导者!

Atlassian

Atlassian Jira 协作 ITSM Confluence

超细!细说Zookeeper选举的一个案例(下)

恒生LIGHT云社区

Go golang zookeeper Go 语言

Sentinel-Go 源码系列(三)滑动时间窗口算法的工程实现

捉虫大师

Go sentinel-go

【紧急】Log4j又发新版2.17.0,只有彻底搞懂漏洞原因,才能以不变应万变,小白也能看懂

Tom弹架构

Java log4j 安全漏洞

Linux之nl命令

入门小站

Linux

Java 基础之详解 Java IO

编程江湖

JAVA开发

南瓜电影CTO早晨6点接到紧急电话,被告知“系统压力大”,看其如何化解危机

大咖说

Serverless 技术 数智化

企业如何正确使用CRM系统?

低代码小观

低代码 企业管理 CRM CRM系统 企业管理软件

先进开发团队,先用 Apifox,做“API 文档先行”理念的先行者!

狐哥说技术

Apifox API swagger API文档

中科柏诚布局信创产业,护航信创产品安全

联营汇聚

实现更高性能,一起探索Amazon Redshift高级查询加速器

亚马逊云科技 (Amazon Web Services)

Data

阿联酋区块链大会“DCS 2021 ” 闭幕 Hoo虎符成会展焦点

区块链前沿News

DCS 虎符 Hoo 虎符交易所 DCS 2021

公安合成作战指挥系统开发,情指勤舆一体化平台建设

电微13828808271

智慧公安重点人员管控系统开发建设方案

a13823115807

智慧公安

问诊把脉“实景三维业务发展瓶颈在哪里”和“御医良方”

焱融科技

云计算 云原生 GIS 高性能 文件存储

盘点 2021 征文大赛|记录你的年度闪光时刻!

InfoQ写作社区官方

盘点2021 热门活动

大数据开发hadoop之yarn基础架构详解

@零度

大数据 hadoop YARN

Linux之nl命令

入门小站

Linux

linux学习全套资料:结构化命令case-for-while

侠盗安全

Linux 运维 运维工程师 云计算架构师

Linux一学就会--Shell教程 || Shell的基础用法(详细)

学神来啦

Linux centos 运维 Shell linux云计算

TDinsight——基于Grafana的TDengine零依赖监控解决方案

TDengine

数据库 tdengine 时序数据库 后端技术

架构训练营 -- 模块三

LJK

架构训练营

质量基础设施一站式服务线上平台助力高质量发展

电微13828808271

智慧警务系统建设方案,公安重点人员动态管控系统开发

电微13828808271

spring 通过xml文件进行依赖注入

田镇珲

在线JSON转ClickHouse数据表工具

入门小站

工具

Java中List排序的3种方法!

王磊

Java

【云堡垒机】市面上部分云堡垒机厂商大汇总

行云管家

云计算 网络安全 堡垒机 IT运维 IT资产

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