Maison >développement back-end >Golang >Comment puis-je optimiser l'analyse des entrées dans Go pour une extraction plus rapide des entiers ?

Comment puis-je optimiser l'analyse des entrées dans Go pour une extraction plus rapide des entiers ?

DDD
DDDoriginal
2024-12-14 15:45:18286parcourir

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

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn