Maison >développement back-end >Golang >Comment puis-je compter efficacement les lignes dans un fichier Go ?

Comment puis-je compter efficacement les lignes dans un fichier Go ?

DDD
DDDoriginal
2025-01-04 16:18:39963parcourir

How Can I Efficiently Count Lines in a Go File?

Déterminer efficacement le nombre de lignes dans Golang

Lorsque vous travaillez avec des fichiers dans Golang, une tâche courante consiste à déterminer le nombre de lignes qu'ils contiennent. Bien que parcourir l’intégralité du fichier en boucle soit une approche simple, elle peut s’avérer inefficace. Une solution plus efficace consiste à utiliser la fonction bytes.Count.

La fonction bytes.Count nous permet de compter les occurrences d'une séquence d'octets dans une tranche d'octets. Dans notre cas, nous voulons compter le nombre de caractères de nouvelle ligne (n) dans les données d'octets du fichier. Voici à quoi ressemblerait le compteur de lignes optimisé :

func lineCounter(r io.Reader) (int, error) {
    buf := make([]byte, 32*1024) // Larger buffer for faster performance
    count := 0
    lineSep := []byte{'\n'}

    for {
        c, err := r.Read(buf)
        count += bytes.Count(buf[:c], lineSep)

        switch {
        case err == io.EOF:
            return count, nil

        case err != nil:
            return count, err
        }
    }
}

En utilisant la fonction bytes.Count et en optimisant la taille du tampon, cette approche minimise la surcharge associée au bouclage dans le fichier et offre des améliorations significatives des performances.

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