带你读《2022龙蜥社区全景白皮书》——5.4.1 C++编译器和基础库

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
性能测试 PTS,5000VUM额度
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 带你读《2022龙蜥社区全景白皮书》——5.4.1 C++编译器和基础库

5.4 编程语言


5.4.1 C++编译器和基础库


背景概述


Alibaba Cloud Compiler(ACC)编译器,相比GCC,或其他Clang/LLVM版本在编译、构建速度上有很大的提升;利用ACC ThinLTO、AutoFDO和Bolt等技术可以在不同程度上优化程序性能。ACC在支持不同CPU架构(X86、AArch64)基础上,进一步针对倚天710芯片进行优化,取得额外性能提升。


我们基于ACC编译器开发了一套贴近C++开发者、非常易用和高性能的C++基础库,包括:协程、modules、编译期反射、序列化、rpc、http、orm等常用的组件。


ACC与C++基础库,为龙蜥社区开发者提供了C++ 开发的一站式解决方案,快速构建高性能的C++应用:

通过编译器切换升级到ACC,可以在不用大幅修改代码的情况下获得性能提升和编译速度大幅提升;

使用C++ 基础库的协程子库,将一些现存业务的同步任务造成协程异步任务可以获得性能的大幅提升;

使用C++ 基础库的协程子库将异步回调逻辑变成同步逻辑,让异步代码变得简单和易维护;

使用C++ 基础库的rpc、http、序列化和ORM等子库可以快速构建高性能C++应用。



技术方案


ACC ThinLTO性能优化

在一些业务中启用ThinLTO优化后,qps和cpu workload提升效果较好。


image.png


ACC Bolt性能优化

在某存储平台中启用Bolt性能优化后,4K顺序写场景IOPS可提升8%,延时降低7.4%,优化效果明显。


async_simple协程库

某计算平台和搜索平台将同步改造成协程异步之,qps获得了数量级的提升。将异步回调改造成协程异步之后性能获得了8%左右的提升。


struct_pack序列化库

用户只需要一行代码就可以用struct_pack完成序列化和反序列化。相比于protobuf等开源库需要定义proto文件和生成代码的方式,大大简化了使用序列化库的使用方式。同时,相比protobuf性能提升7-20倍。


image.png

coro_rpc库

coro_rpc库是基于无栈协程和编译期反射的高性能易用的rpc库,几行代码就可以提供一个rpc服务,让异步IO变得简单,性能比brpc高2-4倍。


image.png


相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
6天前
|
存储 计算机视觉 C++
在C++中实现Armadillo库与OpenCV库之间的数据格式转换
在C++中实现Armadillo库与OpenCV库之间的数据格式转换是一项常见且实用的技能。上述步骤提供了一种标准的方法来进行这种转换,可以帮助开发者在两个库之间高效地转移和处理数据。虽然转换过程相对直接,但开发者应留意数据类型匹配和性能优化等关键细节。
23 11
|
6天前
|
存储 计算机视觉 C++
在C++中实现Armadillo库与OpenCV库之间的数据格式转换
在C++中实现Armadillo库与OpenCV库之间的数据格式转换是一项常见且实用的技能。上述步骤提供了一种标准的方法来进行这种转换,可以帮助开发者在两个库之间高效地转移和处理数据。虽然转换过程相对直接,但开发者应留意数据类型匹配和性能优化等关键细节。
14 3
|
18天前
|
C++
fedora安装静态c和c++库
fedora安装静态c和c++库
|
23天前
|
编解码 编译器 C++
VS Code C/C++ MSVC编译器
VS Code C/C++ MSVC编译器
42 2
|
30天前
|
人工智能 Anolis
聚焦C++20 最新标准!技术 Workshop 精彩亮点一览 | 2024 龙蜥大会
多场技术 Workshop、多位领域专家亲自授课,分享独家洞察与宝贵经验。
|
1月前
|
算法 数据可视化 机器人
Pinocchio - 开源多刚体动力学 C++、Python库
Pinocchio - 开源多刚体动力学 C++、Python库
48 2
|
19天前
|
C++
C/C++静态链接pthread库的坑【-static -pthread】
C/C++静态链接pthread库的坑【-static -pthread】
|
23天前
|
编译器 C++
VS Code设置C++编译器路径
VS Code设置C++编译器路径
26 0
|
24天前
|
算法 C# 开发工具
《黑神话:悟空》背后的编程语言揭秘——超越C++的多元技术融合
【8月更文挑战第27天】在游戏开发领域,一款游戏的成功往往离不开其背后强大的技术支持和编程语言的精妙运用。《黑神话:悟空》作为备受瞩目的国产单机动作游戏,其开发过程不仅涉及了多种编程语言,更是一次技术创新的集中展现。然而,当我们深入探讨其开发语言时,会发现它并非仅依赖于单一的C++,而是融合了多种编程语言的优势,共同铸就了这款游戏的辉煌。
118 0
|
25天前
|
C++
C++标准库探索
C++标准库探索
32 0