8 个版本 (稳定)
1.2.0 | 2021年5月18日 |
---|---|
1.1.2 | 2021年5月8日 |
1.1.0 | 2021年4月28日 |
0.0.1 | 2021年4月21日 |
#1697 in Rust 模式
52KB
617 行
parametrizer
一个简单、安全的crate,用于将表示参数函数的正确格式化数学字符串解析成计算它们的Rust函数。从早期版本的Javascript移植而来。
示例用法
将crate包含在您的Cargo.toml文件中
parametrizer = "1.2.0"
然后简单创建一个Parametrizer结构体并调用evaluate方法
use parametrizer::Parametrizer;
let parametric_function = Parametrizer::new("1+2*t*t").unwrap();
assert_eq!(19.0, parametric_function.evaluate(3.0));
底层项是公开的,允许在代码中手动组合项以避免字符串解析的开销。请参阅文档以获取更多支持的语法示例。
性能
显然,参数化函数的性能永远无法与Rust代码的性能相匹配,特别是在考虑编译器执行的性能优化。参数化器crate的开销主要来自其递归性质。对于像多项式这样的简单函数,这可能导致相当明显的差异(Rust约为800皮秒,parametrizer约为18纳秒)。对于更复杂的函数,由于函数开销不太明显,性能差距会减小。(例如,涉及正弦的函数,Rust约为5.5纳秒,parametrizer约为23纳秒。)
(这些数字是从一台机器上的 cargo bench
获得的。您可以克隆仓库并运行包含的基准测试,以查看您的机器上的性能表现。)
贡献
请随时提出更多功能、错误修复或使代码更具惯用性的方法。谢谢!
依赖关系
~770KB
~14K SLoC