parse_number() 作为 SQLite 扩展:C 与 Rust 对比
AI 摘要
四个 SQLite 扩展分别用 C 和 Rust 实现相同的 parse_number() 行为,用于将含货币符号、千分位逗号、百分号和负号的字符串转换为可求和、可排序的数值,并测试类型保留、解析规则和浮点精度。优化后的 C 实现最快,每行约 16 至 19 纳秒,约为 Rust 版本的两倍,也远快于 SQL replace();普通 C 版本因依赖 strtod() 在小数解析上较慢,经紧凑快速路径优化后差距消除。Rust 扩展体积为 321 KB 和 298 KB,C 扩展仅 14 KB。所有版本在 800 万次模糊测试中结果一致。
评论