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
Libérer: 2024-12-14 15:45:18
original
285 Les gens l'ont consulté

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
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal