なぜ cgo は遅いのですか?
テスト コードでは、C 関数と Go 関数がそれぞれ 1 億回実行される実行時間を比較しています。 C 関数は Golang 関数よりも時間がかかり、テスト コードに何か問題があるのではないかと心配しています。
CGo 経由で C/C コードを呼び出すオーバーヘッドが高いため、CGo 呼び出しは最小限に抑えるのが最適です。この例では、CGo 関数をループ内で繰り返し呼び出すよりも、C ループを作成する方が効率的である可能性があります。
Go ランタイムのスレッド設定は、いくつかの方法で C コードの期待を裏切る可能性があります。
したがって、CGo は安全な方法で実行します。従来のスタックを使用した別のスレッドの C コード。
次のような言語とは異なります。 Python では、プログラムを高速化するために C でコードのホットスポットを書き換えるのが一般的でしたが、Go では C と Go コード間のパフォーマンスの差ははるかに小さくなっています。既存のライブラリとのインターフェース用に CGo を予約し、場合によっては Go から必要な呼び出しの数を減らすために小さな C ラッパー関数を使用することを検討してください。
以上が私の Cgo コードが予想される Go コードよりも遅いのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。