50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

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

关注

评论

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

广东加速人工智能人才培养,和鲸Heywhale发布人工智能通识课解决方案助力快速开课

ModelWhale

Python 人工智能 大数据 R语言 通识课

区块链 RWA 系统的主要功能

北京木奇移动技术有限公司

区块链技术 软件外包公司 RWA开发

智谱AI:引领国内开源大模型的创新与商业化

测试人

人工智能 软件测试

Permute 3:一键转换,媒体文件轻松驾驭

Rose

AI智能决策赋能服装零售 实现精准商品计划与供需平衡

第七在线

电子商务怎么定义?电子商务公司哪些场景需要用到堡垒机?

行云管家

网络安全 IT 运维 电子商务

数字营销咨询,照亮企业营销数字化每一步

赛博威科技

营销数字化 数字营销 赛博威

Spring中的循环依赖是怎么个事?

伤感汤姆布利柏

Axure RP 11 for mac中文破解版 及安装教程

Rose

集成自然语言理解服务,让应用 “听得懂人话”

HarmonyOS SDK

harmoyos

六盘水正规等保测评机构有吗?在哪里?

行云管家

等保 等保测评 六盘水

AIAPI - 转向AI原生检索

百度Geek说

API 编排 结构化数据 系统优化 AGI rag

区块链RWA系统开发的技术框架

北京木奇移动技术有限公司

区块链技术 软件外包公司 RWA开发

WebGL 项目外包开发流程

北京木奇移动技术有限公司

软件外包公司 数字孪生开发 webgl开发

区块链 RWA 系统开发的技术难点

北京木奇移动技术有限公司

区块链技术 软件外包公司 RWA开发

如何理解符号引用和直接引用?

秃头小帅oi

生产管理用上自动排产,企业离智慧工厂又进了一步

万界星空科技

mes 万界星空科技 自动排产 生产计划 智能排产

天津市级人工智能通识课超10w人学习,和鲸Heywhale人工智能通识课解决方案重磅上线!

ModelWhale

Python 人工智能 大数据

智能排产能解 决工厂什么问题?

万界星空科技

mes 万界星空科技mes 自动排产 智能排产

ARMS 用户体验监控正式发布原生鸿蒙应用 SDK

阿里巴巴云原生

阿里云 云原生 可观测

京东商品详情API接口的开发、应用与收益探索

科普小能手

数据 电商 京东 API 接口 API 测试

提供方耗时正常,调用方毛刺频频

京东零售技术

后端

真实案例解析缓存大热key的致命陷阱

京东零售技术

后端

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