写点什么

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

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

关注

评论

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

排序——冒泡排序

若尘

排序 冒泡排序 冒泡

【架构设计模块一】:微信业务架构图 & 学生管理系统

Ryoma

架构实战营

《持之以恒的从事运动》一

Changing Lin

网络攻防学习笔记 Day63

穿过生命散发芬芳

网络攻防 7月日更

不收藏你就后悔吧!费了三天才从GitHub上扒下的阿里Java优化笔记

Java架构师迁哥

Hive解析Json数组超全讲解

五分钟学大数据

hive 7月日更

完美收官!字节4面斩下2-2Offer,入职就是30K16薪,全凭这套“面试+架构进阶知识点”pdf

Java 程序员 架构 面试

二分查找常见套路与分析

gevin

算法 二分查找

Reactor响应式编程,你只差这个!

CodeWithBuff

Java reactor

成功拿到饿了么offer后!我总结 5月上半月大厂面试真题,押题命中率高达 95%以上

Java 程序员 架构 面试

【Flutter 专题】97 仿网易新闻标签选择器

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 7月日更

【LeetCode每日一题 Day 4】4. 寻找两个正序数组的中位数

编程熊

程序员 算法 LeetCode 面经 笔试

凌晨起来肝的一篇 Java 学习路线,保证学弟学妹们大三大四的时候顺利找到实习 Offer

分层架构:一个经典却得不到优的难题

码猿外

架构 微服务

啥,Vue又出新单曲?

wzx

Vue 大前端

如何预防一个服务故障崩掉整个系统?【熔断】

我爱娃哈哈😍

微服务 架构设计 熔断

WebFlux 操作 MySQL 是种什么体验?

整整奋战6个月,入职字节跳动那一天,我泪目了

Java架构师迁哥

毕业两年就拿到腾讯,字节offer,原来是看了这份BAT总结的面试核心知识点

Java架构师迁哥

足足13万字,腾讯架构师纯手肝“JDK源码笔记”带你从入门到实战!

Java架构师迁哥

免费分享Java高并发与多线程的优秀图书

Java入门到架构

Java 推荐书籍

比收费软件还良心的软件,这回藏不住了 | OBS

彭宏豪95

效率 软件 App 录屏软件

Java线程映射到操作系统线程原理浅析

CodeWithBuff

Java JVM

MySQL开篇

卢卡多多

架构 MySQL 数据库 7月日更

架构实战营模块七作业

竹林七贤

external-attacher源码分析(1)-main方法与启动参数分析

良凯尔

Kubernetes 源码分析 Ceph CSI Kubernetes Plugin

架构实战营模块一作业

Clarke

架构实战营

先到先得先学!Spring Cloud Alibaba第三版耀世升级全彩PDF版

Java架构追梦

Java 阿里巴巴 架构 面试 SpringCloud

🐬【MySQL技术导航】「索引技术」体验前所未有的技术探险,看穿索引的本质和技术体系(上篇)

码界西柚

MySQL 索引结构 7月日更 索引原理

杀进腾讯你知道多难吗?6个小时,4 轮技术面+1 轮 HR面,面到吐才斩获40k*16 薪offer!

Java架构师迁哥

微信业务架构图和“学生管理系统”毕业架构设计

NewBranSTONE

#架构实战营

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