yyjson 0.11.0 版本发布:性能优化与新特性解析
yyjson The fastest JSON library in C 项目地址: https://gitcode.com/gh_mirrors/yy/yyjson
yyjson 是一个高性能的 C 语言 JSON 库,以其极快的解析速度和低内存占用著称。它支持完整的 JSON 规范,包括 RFC 8259 标准,同时提供了简单易用的 API 接口。yyjson 特别适合对性能有严格要求的应用场景,如游戏开发、高频交易系统和大规模数据处理等。
新增功能亮点
1. 增量式 DOM 读取
0.11.0 版本引入了增量式 DOM 读取功能,通过 yyjson_incr_read()
、yyjson_incr_new()
和 yyjson_incr_free()
这一组新函数,开发者可以分块处理 JSON 数据。这对于处理网络流或大文件特别有用,可以显著降低内存峰值使用量。
2. 浮点数输出格式控制
新增了三种浮点数输出控制方式:
YYJSON_WRITE_FP_TO_FLOAT
标志强制使用单精度浮点格式输出YYJSON_WRITE_FP_TO_FIXED(prec)
标志支持定点数格式输出,可指定小数位数set_fp_to_float()
和set_fp_to_fixed()
方法允许对单个数值进行格式控制
3. 字符串输出优化
新增的 set_str_noesc()
函数可以跳过特定字符串的转义处理,这在处理已知安全的字符串时能提高序列化性能。
4. UTF-8 BOM 支持
通过 YYJSON_READ_ALLOW_BOM
标志,现在可以解析带有 UTF-8 BOM 头的 JSON 文件,提高了与某些编辑器生成文件的兼容性。
性能优化
浮点数转字符串算法重写
新版本完全重写了浮点数到字符串的转换算法,引入了一条新的快速路径。在实际测试中,这项优化使得浮点数序列化速度提升了约15-20%,特别是在处理大量浮点数据时效果更为明显。
错误修复与改进
- 修复了
yyjson_mut_arr_iter_remove()
函数中的迭代器移除逻辑错误 - 改进了注释解析的错误处理,现在对未闭合的注释会返回更准确的错误类型
- 转义序列的错误位置报告现在指向序列开始而非结束,便于调试
- 修复了美化输出时对
YYJSON_TYPE_RAW
类型缩进不正确的问题 - 解决了直接包含 yyjson.c 时的一些编译警告
向后兼容性
0.11.0 版本保持了完全的 API 兼容性,所有现有代码无需修改即可继续使用。新增的功能通过额外的标志和函数提供,不会影响现有功能的行为。
实际应用建议
对于需要处理大 JSON 文件的应用,建议采用新的增量式读取 API,这可以显著降低内存使用峰值。对于科学计算或金融应用,新的浮点数输出控制功能可以确保数据精度和格式的一致性。
yyjson 0.11.0 的这些改进进一步巩固了其作为高性能 JSON 库的地位,特别是在资源受限环境下的表现更加出色。开发者可以根据具体需求选择合适的新特性来优化自己的应用。
yyjson The fastest JSON library in C 项目地址: https://gitcode.com/gh_mirrors/yy/yyjson
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考