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提升效果较好。
ACC Bolt性能优化
在某存储平台中启用Bolt性能优化后,4K顺序写场景IOPS可提升8%,延时降低7.4%,优化效果明显。
async_simple协程库
某计算平台和搜索平台将同步改造成协程异步之,qps获得了数量级的提升。将异步回调改造成协程异步之后性能获得了8%左右的提升。
struct_pack序列化库
用户只需要一行代码就可以用struct_pack完成序列化和反序列化。相比于protobuf等开源库需要定义proto文件和生成代码的方式,大大简化了使用序列化库的使用方式。同时,相比protobuf性能提升7-20倍。
coro_rpc库
coro_rpc库是基于无栈协程和编译期反射的高性能易用的rpc库,几行代码就可以提供一个rpc服务,让异步IO变得简单,性能比brpc高2-4倍。