2024 年 2 月 9 日撰写的内容:
- 博客文章内容:生物信息学领域难以处理日益增大的数据集,存在高低层语言分裂问题,Mojo 可作为“Pythonic”且快速的语言来弥补这一差距,文章还介绍了用 Mojo 实现的基准测试及击败 Rust 库的情况。
- 第一印象:Mojo 与 Python 不同,具有多种低级语言特征,如泛型函数、不同整数类型、可变与不可变变量、类型声明等,似乎是一种旨在与 Python 良好互操作的静态语言,其主要应用于深度学习,但不清楚如何改变现有局面,同时也有一些优点,如对性能重视、内置 SIMD 能力等。
- DNA 测序:鸟瞰视角:介绍了 DNA 是生物遗传的控制因素,Illumina 测序仪的工作原理及 FASTQ 格式,这是测序仪输出的常见格式。
- Mojo 实现:Mojo 在 FASTQ 解析基准测试中表现出色,速度快约 3.92GB/s,但解析过程缺乏验证,其秘密在于通过 SIMD 指令快速查找换行符,同时也存在一些可优化之处。
- 绕道:解析器应进行多少验证?:讨论了解析器应进行多少验证,对比了 Needletail 和 FASTX.jl 解析器的验证方式及性能差异,认为解析器应在保证不给出错误答案的前提下尽量少做验证。
- 匹配 Julia 中的实现:将 Mojo 的实现移植到 Julia 中,速度更快,说明 Mojo 的高速度可能来自实现而非语言本身,还探讨了一些性能差异的原因。
- 总结思考:不否定 Mojo 的观点,但对其基准测试结果的实际价值持保留态度,对 Mojo 的营销 hype 感到敏感,认为 Julia 是生物信息学中解决两语言问题的更优选择,对 Mojo 是否给 Python 生态带来真正价值持观望态度。
附录:
- 关于 Mojo 代码未进行验证的回应:最初阅读的代码未进行验证,虽之后代码有所更新添加了验证,但仍比 Needletail 验证少,同时指出 Needletail 也有未做的验证及验证的开销。
- 关于未运行 Mojo 代码的质疑:无需在自己机器上运行 Mojo 即可证明其速度原因,通过在 VM 中运行比较不同代码的时间,说明 Mojo 实现不足以证明其速度快是因独特语言特征。还对一些相关问题进行了补充说明,如 DNA 存储方式、不同解析器的特点等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。