為什麼 cgo 這麼慢?
您的測試程式碼比較了 C 和 Go 函數各運行 1 億次的執行時間。 C 函數比 Golang 函數花費更長的時間,您擔心您的測試程式碼有問題。
透過 CGo 呼叫 C/C 程式碼的高開銷使得 CGo 呼叫最小化。在提供的範例中,建立 C 迴圈可能比在循環中重複呼叫 CGo 函數更有效。
Go 運行時的線程設定可以透過多種方式打破C 程式碼的期望:
因此,CGo 採取運行的安全方法C 程式碼在具有傳統堆疊的單獨線程中。
與 Python 等語言不同,需要重寫C 中的程式碼熱點對於加速程式來說很常見,而 Go 中 C 和 Go 程式碼之間的效能差距要小得多。考慮保留 CGo 與現有庫的接口,可能使用小型 C 包裝函數來減少 Go 所需的呼叫數量。
以上是為什麼我的 Cgo 程式碼比預期的 Go 程式碼慢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!