一个业务需求上需要在庞大矩阵里进行比较复杂的科学计算,进行一些通用计算时候 pandas 和 numpy 自然是首选,比如算协方差之类的,但是业务还有一些比较复杂的计算需求(比如特定环境下的开窗)不能用通用计算实现。
目前的做法是将 pd 数据导入到 python 数据结构,然后再通过 ffi 传入 rust 编写的动态链接库。虽然相比于 py 硬写性能提高了几个数量级,不过开分析看了一下这个计算当中有超过 50%的占用用在处理各种各样的类型转换上。
有一个想法是这些框架有没有提供三方接口,可以直接把指定区域的内存暴露给第三方软件使用从而省去了类型转换的麻烦(比如现在是 np.int 转 python 的 int 数据结果,再转 rust 的 usize 这个过程开销太高了,且没什么实质意义)。有无熟悉科学计算框架的老哥说一说。
(最好 py+rust 技术栈内可以解决的,cython 项目我感觉文档非常不友好,一直也没写明白过)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.