Folly 是 Facebook 开源的高性能 C++ 基础设施库,专注解决大规模服务中的内存管理、异步 I/O 等痛点,依赖 C++17+、Linux 优先,需源码编译并链接多项系统依赖。
Folly 是 Facebook 开源的 C++ 库,专注高性能、生产级基础设施组件,不是通用算法库,而是为解决大规模服务中常见痛点(如内存管理、异步 I/O、线程安全、序列化)而生。它依赖较新 C++ 标准(推荐 C++17 或以上),不追求跨平台兼容性,对 Linux 环境支持最完善。
Folly 没有官方预编译包,需本地构建。主流方式是源码编译:
apt-get install 批量安装)git clone https://github.com/facebook/folly.git && cd folly
build/fbcode_builder/getdeps.py 自动拉取和构建依赖(官方推荐流程);或手动用 CMake 配置:mkdir _build && cd _build && cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo
make -j$(nproc) 编译,sudo make install 安装(默认到 /usr/local)别一上来就啃整个库。从高频实用组件切入:
const char* 和 std::string 传参,避免拷贝。用法类似 std::string_view(C++17),但兼容更早标准。std::string 替代品,小字符串优化(SSO)更强,分配器更友好,尤其适合高频字符串拼接场景。AsyncSocket)、定时器、任务调度。是 folly::IOThreadPoolExecutor 和 proxygen 的基础。folly::Synchronized<:vector>> vec;,用 vec.withLock([](auto& v) { v.push_back(42); }) 安全操作。编译时加 -lfolly -lfollybenchmark(若用 benchmark),头文件路径通常为 /usr/local/include。
避免“全量引入”,按需链接:
find_package(folly REQUIRED) + target_link_libraries(your_target PRIVATE folly),比硬写路径更健壮#include 、#include ,不需 这类旧路径folly:: 下,无 using 声明更安全-DFOLLY_HAVE_PTHREAD_SPINLOCK=ON(Linux)可提升某些锁性能,但非必需新手容易卡在这几个地方:
v2025.07.31.00 这类 LTS tagglog 或 boost 旧版,Folly 构建可能失败,统一升级或用 getdeps.py 隔离依赖-lfolly 不够,还需 -lglog -lgflags -lssl -lcrypto -levent 等,pkg-config --libs folly 可查完整列表(安装后支持)vector、map 等基础容器的通用替代,它的容器(如 fbvector)有特定优化目标,勿盲目替换