速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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

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

关注

评论

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

​​软件开发入门教程网之​​C++ 信号处理

雪奈椰子

ios打包

学习大数据技术培训班靠谱吗

小谷哥

软件开发入门教程网之C++ 引用

雪奈椰子

ios打包

火山引擎DataTester:5个优化思路,构建高性能A/B实验平台

字节跳动数据平台

大数据 AB testing实战

容器 I/O 性能诊断:到底哪个应用是带宽杀手?

阿里巴巴中间件

阿里云 容器 云原生

餐饮业数字化提速,OceanBase助海底捞变身“云上捞”

OceanBase 数据库

数据库 oceanbase

PolarDB for PostgreSQL 14 开源实战训练营免费报名中!

阿里云数据库开源

数据库 阿里云 开源 postgre PolarDB for PostgreSQL

软件测试/测试开发 | 使用 Zabbix + Grafana 搭建服务器监控系统

测试人

软件测试 Grafana 自动化测试 zabbix 测试开发

​​软件开发入门教程网之​​C++ 信号处理信号

雪奈椰子

深耕5G云专网,阿里云祝顺民入选“2022年度5G创新人物”

云布道师

云网络

不会还有人不知道吧?BOM上的器件也能在PCB上快速定位啦!(内附高效手焊攻略)

华秋PCB

工艺 PCB PCB设计 焊接 PCB工艺

NineData获"IT168 & ITPub 年度创新产品"奖

NineData

数据库 数据管理 多云管理平台 玖章算术 NineData

腾讯企点助力建发纸业:浆纸产业数字化战略,传统行业在低增长时代的新路径

人称T客

16款跨平台应用开发框架,你Pick谁?

Speedoooo

跨端开发 跨端框架 跨端应用平台 跨端开发平台

一站式开发平台 赋能办公全场景

力软低代码开发平台

OceanBase 4.0解读:从TPC-H性能测评看4.0与3.x差异

OceanBase 数据库

数据库 oceanbase

智能流程机器人助你“聚划算”

华为云开发者联盟

人工智能 机器人 华为云 企业号 1 月 PK 榜

AI创作惊艳四方,诸多挑战仍在路上

科技热闻

神经网络模型复杂度分析

嵌入式视觉

params 模型计算量分析 FLOPs 卷积层MAC 浮点计算能力

从0.5到4.0,OceanBase单机分布式一体化的技术演进|DTCC 2022

OceanBase 数据库

数据库 oceanbase

​​软件开发入门教程网之​​C++ 标准库

雪奈椰子

C++

Payso×OceanBase:云上拓新,开启云数据库的智能托管

OceanBase 数据库

数据库 oceanbase

Github获赞32.4K!阿里大牛亲码Spring Boot进阶(全彩版小册)

架构师之道

Java 微服务 架构师

到底什么样的 REST 才是最佳 REST?

江南一点雨

Rest springboot

聊聊Cookie、Session、Token 背后的故事

华为云开发者联盟

前端 华为云 企业号 1 月 PK 榜

目标检测模型基础知识

嵌入式视觉

Focal Loss IOU NMS Soft NMS anchor

目标检测模型的评价标准-AP与mAP

嵌入式视觉

ap map roc PR曲线 精确率与召回率

武汉web前端培训靠谱吗

小谷哥

大数据技术培训学习机构怎么样

小谷哥

如何定义算法?10分钟带你弄懂算法的基本概念

九章云极DataCanvas

机器学习 机器学习算法

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