En langage Go, les méthodes fonctionnent généralement mieux que les fonctions car elles accèdent directement aux champs de type du récepteur et évitent la copie des données. Les méthodes sont principalement utilisées pour opérer sur les valeurs du type de récepteur, tandis que les fonctions effectuent des tâches indépendantes d'un type spécifique. Les benchmarks montrent que les méthodes sont environ 30 % plus rapides que les fonctions. Par conséquent, il est recommandé de préférer les méthodes lors de l’examen des performances, mais les fonctions restent utiles lorsque la flexibilité est requise ou lors de l’exécution de tâches non liées à un type spécifique.
La différence de performances entre les méthodes et les fonctions dans Go
Dans le langage Go, les « méthodes » et les « fonctions » sont tous deux des blocs de code utilisés pour effectuer des tâches spécifiques, mais ils présentent des différences clés qui affecteront leur performance.
Les méthodes
Fonctions
Différence de performances
De manière générale, les méthodes sont plus performant que les fonctions Advantage. En effet :
Exemple pratique
Considérons les fonctions et méthodes suivantes, qui calculent toutes la somme d'une tranche :
// 函数 func SumInts(s []int) int { var sum int for _, v := range s { sum += v } return sum } // 方法 type IntSlice []int func (s IntSlice) Sum() int { var sum int for _, v := range s { sum += v } return sum }
À l'aide d'un benchmark, nous pouvons comparer leurs performances :
import "testing" import "time" func BenchmarkSumInts(b *testing.B) { s := []int{1, 2, 3, 4, 5} for i := 0; i < b.N; i++ { SumInts(s) } } func BenchmarkSumMethod(b *testing.B) { s := IntSlice{1, 2, 3, 4, 5} for i := 0; i < b.N; i++ { s.Sum() } }
L'exécution du benchmark produit le résultat suivant :
BenchmarkSumInts 500000000 21.8 ns/op BenchmarkSumMethod 500000000 14.9 ns/op
Comme vous pouvez le constater, les méthodes sont beaucoup plus rapides que les fonctions, environ 30 % plus rapides.
Conclusion
Les méthodes sont généralement meilleures que les fonctions en termes de performances. Cependant, les fonctions restent utiles lorsque vous devez effectuer des tâches qui ne sont pas liées à un type spécifique ou lorsque vous avez besoin de plus de flexibilité. Lorsque vous choisissez une méthode ou une fonction dans Go, il est important de peser soigneusement ces facteurs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!