Heim >Backend-Entwicklung >Golang >Warum ist mein Cgo-Code langsamer als der erwartete Go-Code?
Warum ist CGO so langsam?
Ihr Testcode vergleicht die Ausführungszeit von C- und Go-Funktionen, die jeweils 100 Millionen Mal ausgeführt werden. Die C-Funktion dauert länger als die Golang-Funktion und Sie befürchten, dass mit Ihrem Testcode etwas nicht stimmt.
Der hohe Overhead beim Aufrufen von C/C-Code über CGo minimiert CGo-Aufrufe am besten. Im bereitgestellten Beispiel könnte es effizienter sein, eine C-Schleife zu erstellen, anstatt eine CGo-Funktion wiederholt in einer Schleife aufzurufen.
Die Einrichtung der Go-Laufzeit für ihre Threads kann die Erwartungen an C-Code auf verschiedene Arten durchbrechen:
Daher wählt CGo den sicheren Ansatz der Ausführung C-Code in einem separaten Thread mit einem herkömmlichen Stapel.
Im Gegensatz zu Sprachen wie Python, bei denen das Umschreiben von Code Hotspots darstellt in C zur Beschleunigung von Programmen üblich war, ist Gos Leistungsunterschied zwischen C- und Go-Code viel geringer. Erwägen Sie, CGo für die Schnittstelle zu vorhandenen Bibliotheken zu reservieren, möglicherweise mit kleinen C-Wrapper-Funktionen, um die Anzahl der von Go erforderlichen Aufrufe zu reduzieren.
Das obige ist der detaillierte Inhalt vonWarum ist mein Cgo-Code langsamer als der erwartete Go-Code?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!