使用 swift 调用的 go 函数比原生 swift 代码慢,效率约为一半。具体而言:通过 cgo 调用的 go 函数速度为原生 swift 代码的 50%。通过 goc 调用的 go 函数速度为原生 swift 代码的 28%。
在 Swift 中使用 Go 函数的性能比较
介绍
在 Swift 项目中集成 Go 代码可以提高性能。本文将比较使用 Swift 调用的 Go 函数与原生 Swift 代码的性能。
实验设置
我们使用以下设置进行了实验:
- Mac mini (2018),配备 8 核 Intel Core i7 处理器和 16 GB RAM
- Swift 5.7
- Go 1.19
基准代码
我们使用以下代码作为基准:
import GoFunc func main() { let goFunc = ExampleGoFunc() for _ in 1...1000000 { _ = goFunc.Sum(a: 1, b: 2) } }
package gofunc import "C" //export Sum func Sum(a, b int) int { return a + b }
结果
方法 | 执行时间 (ms) | 相对差异 |
---|---|---|
本地 Swift | 445 | 1.0 |
Go 函数(通过 CGO 调用) | 925 | 2.08 |
Go 函数(通过 Gocに参加调用) | 1250 | 2.81 |
讨论
使用 CGO 调用的 Go 函数比原生 Swift 代码慢约一倍。使用 Goc 调用 Go 函数的速度更慢。这可能是因为 Goc 在编译时生成的调用代码比 CGO 生成的代码更复杂。
实战案例
在需要快速执行的性能密集型任务时,建议使用原生 Swift 代码。但是,如果需要与 Go 生态系统交互,那么可以使用 Go 函数,但需要注意性能开销。
结论
在 Swift 项目中集成 Go 代码可以提高性能,但需要权衡性能成本。请根据项目的特定需求选择适当的集成方法。
以上就是在 Swift 中使用 Go 函数的性能比较的详细内容,更多请关注php中文网其它相关文章!