sc
v1.0.4
可移植、独立的 C 库和数据结构。 (C99)
每个文件夹都是独立的,其中包含单个标头/源文件对。没有
为库构建,只需复制所需的文件即可。
例如,如果您需要记录器,请将 sc_log.h 和 sc_log.c 复制到您的项目中。
Linux 上有 100% 的分支覆盖率,CI 运行在
操作系统:Linux、MacOS、FreeBSD 和 Windows 编译器:GCC、Clang、MSVC Arch:x64、aarch64、armv6(32 位)、armv7(32 位)、ppc64le、s390x(大端)、riscv64 消毒剂:valgrind 和 clang/gcc 消毒剂(地址、未定义、线程)
图书馆 | 描述 |
---|---|
大批 | 通用数组/向量 |
缓冲 | 用于编码/解码变量的缓冲区,最适合协议/序列化实现 |
状况 | 适用于 Posix 和 Windows 的条件包装器 |
CRC32 | crc32c,使用 crc32c CPU 指令(如果可用) |
堆 | 最小堆也可以用作最大堆/优先级队列 |
.ini | Ini解析器 |
链表 | 侵入式链表 |
记录器 | 记录器 |
地图 | 高性能开放寻址哈希图 |
内存映射 | 适用于 Posix 和 Windows 的 Mmap 包装器 |
互斥量 | Posix 和 Windows 的互斥包装器 |
选项 | 命令行参数解析器。非常基本的一个 |
性能 | 通过 perf_event_open() 获取性能计数器信息的基准实用程序 |
队列 | 通用队列,也可以用作出队/堆栈/列表 |
SC | 实用功能 |
信号 | 信号安全 snprintf 和信号处理程序(处理 CTRL+C、崩溃时打印回溯等) |
插座 | Pipe / tcp 套接字(也是 unix 域套接字) /Epoll/Kqueue/WSAPoll for Posix 和 Windows |
细绳 | 长度前缀、空终止的 C 字符串。 |
线 | Posix 和 Windows 的线程包装器。 |
时间 | Posix 和 Windows 的时间和睡眠函数 |
计时器 | 具有快速轮询/取消操作的哈希定时轮实现 |
乌里 | 一个基本的 uri 解析器 |
它比库 X 更好吗?
我经常将这些库用于高性能服务器端应用程序。还,
我关心可读且易于调试的代码。总之,这些库显示
我对性能/API 设计/可读性的品味(权衡)。你可能或可能
不喜欢。
为什么不在X这里改变API,这样会更容易使用呢?
请发送拉取请求,但请确保不要引入未定义的
行为。可以提供更好的 API,尤其是通用库,
如果你不关心未定义的行为。我尽力避免它。
使用这些库最有效的方法是什么?
就像任何其他代码一样。作为源文件添加到您的项目中并最好使用
-O3 -flto + PGO。但它可能对您的用例没有任何影响。
库 X 是否在任何产品中使用?
生产中使用了一些库,但请务必自行测试。
有释放吗?
请使用主分支。它被认为是稳定的。
你们会保持 API 稳定吗?
请不要期望有稳定的 API。这些库相当
小(其中大多数不到几百行代码)并且理想情况下您
应该阅读代码并理解它的作用并根据您的需要进行调整
需要。所以,不要盲目更新库。我希望你能处理好
轻松解决任何可能的 API 差异。话虽这么说,我会尽力保持
API稳定。