簡體   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