Heim >Backend-Entwicklung >Golang >Wie kann ich das Scannen von Eingaben in Go für eine schnellere Ganzzahlextraktion optimieren?
Eingabescannen für Leistung optimieren
Als Antwort auf eine Frage, die die Lesegeschwindigkeit von Eingaben optimieren möchte, wird empfohlen, die Verwendung von bufio.Scanner in Betracht zu ziehen über fmt.Scan. Allerdings besteht auch bei bufio weiterhin ein Zeitüberschreitungsproblem.
Um dieses Problem zu beheben, kann das Ersetzen von fmt.Scan durch bufio.Scanner und die Verwendung einer benutzerdefinierten Konvertierungsfunktion zum effizienten Extrahieren von Ganzzahlen aus den Rohbytes die Leistung beim Lesen von Eingaben erheblich verbessern . Hier ist die optimierte Lösung:
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 }
Dieser überarbeitete Code verwendet bufio.Scanner zum Lesen von Eingabezeilen und optimiert die Effizienz, indem Zahlen direkt aus Bytes analysiert werden, anstatt sie unnötig in Zeichenfolgen umzuwandeln. Dadurch erzielt die Lösung einen deutlichen Leistungsschub im Vergleich zu anderen Methoden.
Das obige ist der detaillierte Inhalt vonWie kann ich das Scannen von Eingaben in Go für eine schnellere Ganzzahlextraktion optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!