met*_*ous 5 performance jvm clojure matrix
clojure有很多矩阵库:
这些库之间的性能折衷是什么?我听说有一些底层实现,在(例如)矩阵实例化和操作性能之间存在权衡,但我无法找到详细说明这些注意事项的综合资源.
谢谢
如果你想使用core.matrix,目前只有两个相当成熟和高效的实现:
Clatrix- 使用对原生BLAS的调用vectorz-clj- 灵活,快速的纯JVM实现这真的取决于你的用例.如果你最关心的是大线性代数运算并且不介意原生依赖,那么Clatrix目前最好的选择就是 - 最好的选择是因为BLAS实现如此之快.这对以下内容特别有用:
如果您想进行一般的数组编程工作,那么它vectorz-clj具有纯JVM代码的优势,并且在数组/矩阵格式方面更加灵活.vectorz-clj很好地支持你在Clatrix中无法做到的事情的例子:
总的来说,vectorz-clj对于大矩阵乘法这样的事情来说速度不会那么快,但可能比Clatrix许多其他操作和中小型矢量工作更快.vectorz-clj除非我认为线性代数性能是主要的瓶颈,否则我通常会选择.
其他core.matrix实现不太成熟,但仍可能对特定用例有用.一个很好的功能core.matrix是能够在使用相同的通用API时混合和匹配实现,因此它不是"全有或全无"的选择.
免责声明:我已经创建或贡献了许多上述项目.我希望我给出了一个相当公正和客观的评价.
如果您不需要core.matrix支持,那么您还有更多选项 - 您可以通过Clojure的Java互操作使用任何Java矩阵库.从理论上讲,这些也可以成为core.matrix实现 - 唯一的限制是有人需要做的工作来扩展core.matrix协议以支持新的矩阵类型.
| 归档时间: |
|
| 查看次数: |
320 次 |
| 最近记录: |