C Swift程序调用编译为动态库的Rust库对性能的影响?

C Swift程序调用编译为动态库的Rust库对性能的影响?,c,cocoa,swift,rust,dylib,C,Cocoa,Swift,Rust,Dylib,我正在用Swift编写一个OSX应用程序,并考虑在Rust中实现部分模型代码MVC pov,以便在web服务器上获得使用的可移植性,因为Swift没有扩展到web服务器空间 如果我将我的Rust代码编译为dynamic library.dylib并遵循某些指导原则,我知道它将生成一个外部接口,该接口看起来像Swift可以使用的典型C接口 在这种情况下,与动态库进行快速通信会对性能产生什么影响?他们和用C写的东西交流有什么不同吗?可以假设动态库中的模型组件是应用程序的中心,因此预期通信是聊天的 [

我正在用Swift编写一个OSX应用程序,并考虑在Rust中实现部分模型代码MVC pov,以便在web服务器上获得使用的可移植性,因为Swift没有扩展到web服务器空间

如果我将我的Rust代码编译为dynamic library.dylib并遵循某些指导原则,我知道它将生成一个外部接口,该接口看起来像Swift可以使用的典型C接口

在这种情况下,与动态库进行快速通信会对性能产生什么影响?他们和用C写的东西交流有什么不同吗?可以假设动态库中的模型组件是应用程序的中心,因此预期通信是聊天的


[如果我用Swift编写整个代码,模型部分将包含在单独的框架/库中,在任何情况下都非常类似于动态库。]

使用外部函数接口时,我可以看到两个主要的成本中心性能:

转换:如果需要在一侧或两侧来回转换数据 失去了优化机会:没有内联,因此错过了很多机会 后者可以用更好的工具链来恢复,特别是在这种情况下,两种语言都可以编译成LLVM IR,我知道至少有一些Rust开发人员/用户希望通过Rust/C交互来管理它,但我还从来没有见过它


前者需要仔细设计,即使如此,如果您希望在作为主要候选字符串的任一侧使用本机复合类型,也不可避免地会发生一些转换。

使用外部函数接口时,我可以看到两个主要的成本中心在性能方面:

转换:如果需要在一侧或两侧来回转换数据 失去了优化机会:没有内联,因此错过了很多机会 后者可以用更好的工具链来恢复,特别是在这种情况下,两种语言都可以编译成LLVM IR,我知道至少有一些Rust开发人员/用户希望通过Rust/C交互来管理它,但我还从来没有见过它

前者需要仔细设计,即使如此,如果您希望在字符串的任一侧使用本机复合类型作为主要候选字符串,也不可避免地会发生一些转换。

请注意,现在。然而,这当然是可能的。祝你好运作为警告,现在。然而,这当然是可能的。祝你好运