Heim >Backend-Entwicklung >Golang >Warum ist meine CGo-Funktion langsamer als meine Pure Go-Funktion?
Leistungsaspekte von CGo
Sie haben einen Vergleich der Ausführungszeiten für CGo und reine Go-Funktionen durchgeführt, und die CGO-Funktion weist eine langsamere Leistung auf . Obwohl Ihr Testcode gültig erscheint, gibt es zugrunde liegende Faktoren, die für diese Ungleichheit verantwortlich sein können.
CGo-Funktionen verursachen aufgrund des Mehraufwands beim Aufrufen von C/C-Code eine Leistungseinbuße. Um die Leistung zu optimieren, wird empfohlen, die Häufigkeit von CGo-Aufrufen zu minimieren. Für Ihr Beispiel könnte es jedoch effizienter sein, die Schleife in den C-Code zu verschieben, als wiederholt eine CGo-Funktion aufzurufen.
Mehrere Aspekte der Goroutine-Einrichtung und -Ausführung in Go können die Erwartungen an C-Code in Frage stellen:
Um die Stabilität zu gewährleisten, führt CGo C-Code in einem separaten Thread mit einem herkömmlichen Stapel aus.
Im Gegensatz zu Sprachen wie Python, bei denen die Optimierung von Code mit C üblich ist, bietet Go eine geringere Leistungslücke zwischen äquivalentem C und Go Code.
Daher ist es im Allgemeinen ratsam, CGo hauptsächlich für die Schnittstelle zu externen Bibliotheken zu verwenden und möglicherweise kleine C-Wrapper-Funktionen für reduzierte Aufrufe aus Go-Code zu verwenden.
Das obige ist der detaillierte Inhalt vonWarum ist meine CGo-Funktion langsamer als meine Pure Go-Funktion?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!