[英]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非常相似。]
使用外部功能接口時,我可以看到兩個主要的成本中心(從性能角度來看):
后者可以用“更好”的工具鏈來恢復,特別是因為在這種情況下,兩種語言都可以編譯為LLVM IR,我知道至少一些Rust開發人員/用戶要實現Rust / C交互來管理它是一個雄心壯志,我還沒看過
前者需要仔細的設計,即使這樣,如果您希望在任一側使用本機復合類型( String
是主要的候選對象),那么不可避免地會發生一些轉換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.