2 个版本
0.1.1 | 2024 年 5 月 30 日 |
---|---|
0.1.0 | 2024 年 5 月 30 日 |
#5 in #lcs
8KB
145 行
lcs_rs
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 不这么做。