#lcs #diff #动态规划

bin+lib lcs_rs

最长公共子序列的实现

2 个版本

0.1.1 2024 年 5 月 30 日
0.1.0 2024 年 5 月 30 日

#5 in #lcs

MIT 许可证

8KB
145

lcs_rs

crates.io docs.rs license

Rust (和 Java) 中最长公共子序列的实现。

用法

let s1 = "GCACAGCGGT";
let s2 = "TTGTGAAATC";

assert!(lcs_rs::lcs(s1, s2) == "GAAT");

10000-10000 测试的基准

待办事项:循环制作基准

Rust

Time: 687.737625ms
Time: 713.694264ms

Java

Time: 623.69858 millis
Time: 668.713163 millis

这个结果在我的电脑上变化了 ~ += 50 ms。

这两个实现都没有进行大量优化,但使用的算法相当快。

尝试解释为什么 Rust 较慢(请不要引用我的话)

也许 JVM 在程序启动时直接分配了一些空间,这使得矩阵的分配更快。

Rust 需要遍历所有字符以获取字符串中的字符数,因为 UTF-8 可以有不同的大小。我认为 Java 不这么做。

无运行时依赖