繁体   English   中英

Swift程序调用Rust库编译为dylib的性能影响?

[英]Performance implications of a Swift program calling a Rust library compiled as a dylib?

我正在用Swift编写OS X应用程序,并考虑在Rust中实现我的模型代码(MVC pov)的一部分,以便获得在Web服务器上使用的可移植性(因为Swift不会扩展到Web服务器空间中)。

如果我将Rust代码编译为动态库(.dylib)并遵循某些准则,则我知道它将生成一个外部接口,该接口看起来像Swift可以使用的典型“ C”接口。

在这种情况下,Swift与dylib通信会对性能产生什么影响? 它们与用C语言编写的内容进行通信有什么不同吗? 可以将dylib中的模型组件假定为应用程序的核心,因此可以预期通信是“聊天”的。

[如果我要用Swift编写整个代码,则模型部分将包含在单独的框架/库中,无论如何,该框架/库与dylib非常相似。]

使用外部功能接口时,我可以看到两个主要的成本中心(从性能角度来看):

  1. 转换:如果您需要来回转换数据(一方面或什至更糟)
  2. 失去优化机会:没有内联,因此错过了很多机会

后者可以用“更好”的工具链来恢复,特别是因为在这种情况下,两种语言都可以编译为LLVM IR,我知道至少一些Rust开发人员/用户要实现Rust / C交互来管理它是一个雄心壮志,我还没看过

前者需要仔细的设计,即使这样,如果您希望在任一侧使用本机复合类型( String是主要的候选对象),那么不可避免地会发生一些转换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM