从20秒到0.5秒:一个使用Rust语言来优化Python性能的案例
boxed_landingpad 的工作方式很简单.它调用闭包,用 panic :: catch_unwind 捕获 panic,解开结果,并在原始指针中加上成功值.如果发生错误,它会填充 err_out 并返回一个 NULL 指针.在 lsm_view_free 中,只需要从原始指针重新构建. 构建扩展要实际构建扩展,我们必须在 setuptools 中做一些不太优雅的事情.幸运的是,在这件事上我们没有花太多时间,因为我们已经有一个类似的工具来处理. 这个做法最方便的部分是源代码用 cargo 编译,二进制安装最终的 dylib,消除任何最终用户使用 Rust 工具链的需要. 那些做得好,那些没做好?我在 Twitter 上被问到:“ Rust 会有什么替代品?”说实话,Rust 很难替代.原因是,除非你想用性能更好的语言重写整个 Python 组件,否则只能使用本机扩展.在这种情况下,对语言的要求是相当苛刻的:它不能有一个侵入式运行时,不能有一个 GC,并且必须支持 C ABI.现在,我认为适合的语言是 C,C++ 和 Rust. (编辑:开发网_开封站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |