写点什么

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

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

关注

评论

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

1179万毕业生求职大潮袭来,8大AI模型实测,谁才是最强求职AI助手?

可信AI进展

#人工智能

百度大模型安全及产业应用实践将亮相 2024 WAVE SUMMIT

百度安全

使用 curl 发送请求

霍格沃兹测试开发学社

和鲸101计划:Python 气象海洋数据分析 Workshop 回顾

ModelWhale

数据 气象

B站视频数据接口实战:视频详情数据获取与分析

tbapi

B站 B站数据采集 B站视频数据接口

详解联邦学习中的异构模型集成与协同训练技术

华为云开发者联盟

人工智能 联邦学习 华为云 华为云开发者联盟 企业号2024年6月PK榜

产品交付能力提升的探索与分享

鲸品堂

交付 交付能力 企业号 6 月 PK 榜

B站视频数据接口应用:关键词搜索与数据分析

tbapi

B站 B站视频数据采集 B站 API接口

签约+1!鼎鼎安全选择 TDengine Cloud 优化智能空闸开关

TDengine

数据库 tdengine 时序数据库

AI 时代下,我们可以拥有怎样的数据库?

KaiwuDB

KaiwuDB DB4AI AI4DB 原生AI

国际导师上海面授大规模敏捷LeSS认证2024年10月24-26日开班 | 报名享特大福利

ShineScrum

less safe 大规模敏捷

系统和流程是我最好的朋友

zhumingwu

Advanced RAG 08:使用 Self-RAG 打造高质量、可追溯的 RAG System

Baihai IDP

程序员 AI 企业号 6 月 PK 榜 rag

文献解读-流行病学-第十期|《SARS-CoV-2 德尔塔和奥密克戎合并感染和重组的证据》

INSVAST

基因数据分析 生信服务 流行病学

基于EasyAnimate模型的视频生成最佳实践

阿里云大数据AI技术

人工智能 阿里云 AIGC

数业智能心大陆AI在心理健康测评中的创新应用

心大陆多智能体

人工智能 数据集 多模态 数字心理 心理测评

软件测试学习笔记丨被测系统架构与数据流分析

测试人

软件测试 测试开发

和鲸101计划:助力上海外国语大学人文社科专业数据分析

ModelWhale

数据 人文社科

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