Maison >développement back-end >Golang >Comment puis-je optimiser l'analyse des entrées dans Go pour une extraction plus rapide des entiers ?
Optimisation de l'analyse des entrées pour les performances
En réponse à une question cherchant à optimiser la vitesse de lecture des entrées, il est recommandé d'envisager d'utiliser bufio.Scanner sur fmt.Scan. Cependant, même avec bufio, un problème de délai d'attente persiste.
Pour résoudre ce problème, remplacer fmt.Scan par bufio.Scanner et utiliser une fonction de conversion personnalisée pour extraire efficacement les entiers des octets bruts peut améliorer considérablement les performances de lecture des entrées. . Voici la solution optimisée :
package main import ( "bufio" "fmt" "os" ) func main() { var n, k, c int scanner := bufio.NewScanner(os.Stdin) scanner.Scan() fmt.Sscanf(scanner.Text(), "%d %d", &n, &k) for ; n > 0; n-- { scanner.Scan() if toInt(scanner.Bytes())%k == 0 { c++ } } fmt.Println(c) } func toInt(buf []byte) (n int) { for _, v := range buf { n = n*10 + int(v-'0') } return }
Ce code révisé utilise bufio.Scanner pour lire les lignes d'entrée, optimisant ainsi l'efficacité en analysant directement les nombres à partir d'octets au lieu de les convertir inutilement en chaînes. En conséquence, la solution obtient une amélioration notable des performances par rapport aux autres méthodes.
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!