Heim > Backend-Entwicklung > Golang > Wie kann ich das Scannen von Eingaben in Go für eine schnellere Ganzzahlextraktion optimieren?

Wie kann ich das Scannen von Eingaben in Go für eine schnellere Ganzzahlextraktion optimieren?

DDD
Freigeben: 2024-12-14 15:45:18
Original
285 Leute haben es durchsucht

How Can I Optimize Input Scanning in Go for Faster Integer Extraction?

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
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage