Inhaltsverzeichnis
Frageninhalt
Lösung
Heim Backend-Entwicklung Golang Was ist der effizienteste Weg, ein Array in Golang zu drucken?

Was ist der effizienteste Weg, ein Array in Golang zu drucken?

Feb 10, 2024 am 09:30 AM
Standardbibliothek

Was ist der effizienteste Weg, ein Array in Golang zu drucken?

In Golang ist die effizienteste Möglichkeit zum Drucken eines Arrays die Verwendung der Println-Funktion im fmt-Paket. Durch die Übergabe eines Arrays als Parameter an die Println-Funktion wird der Inhalt des Arrays automatisch formatiert und gedruckt. Diese Methode ist sehr einfach und effizient und funktioniert für Arrays jeder Größe. Darüber hinaus bietet Golang auch einige andere Methoden zum Drucken von Arrays, z. B. die Verwendung der Join-Funktion im Strings-Paket, um Array-Elemente zu Strings zu verbinden und diese dann auszudrucken, oder die Verwendung einer Schleife zum Durchlaufen des Arrays und zum Drucken jedes Elements. Aber relativ gesehen ist die direkte Verwendung der Println-Funktion die einfachste und effektivste Methode. Ob während der Entwicklung oder beim Debuggen: Das Drucken von Arrays ist ein sehr häufiger Vorgang. Die Beherrschung der effektivsten Methode kann die Entwicklungseffizienz verbessern.

Frageninhalt

Ich bin neu in der Programmierung und möchte mehr über integrierte Funktionen erfahren:

Das ist das Programm:

func main() {
    start := time.now()

    fmt.println(os.args)

    fmt.println(time.since(start))
}
Nach dem Login kopieren

und seine Ausgabe:

[a b c d e f g h i j k l m n o p] 124.009µs

Das ist meine for-Schleife:

package main

import (
"fmt"
"os"
"time"
)

func main() {
start := time.Now()

    var s string
    for i:=0; i<len(os.Args); i++{
        s += os.Args[i] + " " 
    }
    fmt.Println(s)
    
    fmt.Println(time.Since(start))

}
Nach dem Login kopieren

Die Ausgabe ist wie folgt:

/tmp/go-build994847456/b001/exe/main a b c d e f g h i j k l m n o p 25.71μs

Ich wünschte, die integrierten Funktionen in der Standardbibliothek wären schneller.

Wird mein Code durch das Slicen weniger effizient?

Soll ich eine for-Schleife oder die Standardbibliothek verwendenfmt.println?

Ich bin auch verwirrt strings.join(os.args[1:], " ") Wie man 74,293μs durchführt

Lösung

Benchmark verwenden:

var slice = []string{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p"}

func benchmarkfmt(b *testing.b) {
    b.reportallocs()
    for n := 0; n < b.n; n++ {
        _ = fmt.sprint(slice)
    }
}

func benchmarkstringconcat(b *testing.b) {
    b.reportallocs()
    for n := 0; n < b.n; n++ {
        var str string
        for _, s := range slice {
            str += s + " "
        }
    }
}

func benchmarkstringsbuilder(b *testing.b) {
    b.reportallocs()
    for n := 0; n < b.n; n++ {
        var l int
        for _, s := range slice {
            l += len(s)
        }
        var sb strings.builder
        sb.grow(l + len(slice)*len(" "))
        for _, s := range slice {
            sb.writestring(s)
            sb.writestring(" ")
        }
        _ = sb.string()
    }
}

func benchmarkstringsjoin(b *testing.b) {
    b.reportallocs()
    for n := 0; n < b.n; n++ {
        _ = strings.join(slice, " ")
    }
}
Nach dem Login kopieren
BenchmarkFMT
BenchmarkFMT-8                    734088          1633 ns/op         616 B/op         34 allocs/op
BenchmarkStringConcat
BenchmarkStringConcat-8          1290666           919.1 ns/op      1200 B/op         32 allocs/op
BenchmarkStringsBuilder
BenchmarkStringsBuilder-8        6074888           198.6 ns/op        64 B/op          1 allocs/op
BenchmarkStringsJoin
BenchmarkStringsJoin-8           4941542           241.7 ns/op        64 B/op          1 allocs/op
PASS
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWas ist der effizienteste Weg, ein Array in Golang zu drucken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So verwenden Sie einen absoluten Wert in C++ So verwenden Sie einen absoluten Wert in C++ May 06, 2024 pm 06:15 PM

So verwenden Sie einen absoluten Wert in C++

Was bedeutet iomanip in der C-Sprache? Was bedeutet iomanip in der C-Sprache? May 02, 2024 pm 05:57 PM

Was bedeutet iomanip in der C-Sprache?

So verwenden Sie std:: in C++ So verwenden Sie std:: in C++ May 09, 2024 am 03:45 AM

So verwenden Sie std:: in C++

Was bedeutet Primzahl in C++? Was bedeutet Primzahl in C++? May 07, 2024 pm 11:33 PM

Was bedeutet Primzahl in C++?

Was bedeutet Konfiguration in Java? Was bedeutet Konfiguration in Java? May 07, 2024 am 02:39 AM

Was bedeutet Konfiguration in Java?

So öffnen Sie ein Fenster in Python So öffnen Sie ein Fenster in Python May 05, 2024 pm 08:15 PM

So öffnen Sie ein Fenster in Python

Was bedeutet Fabs in C++? Was bedeutet Fabs in C++? May 08, 2024 am 01:15 AM

Was bedeutet Fabs in C++?

So berechnen Sie den absoluten Wert in C++ So berechnen Sie den absoluten Wert in C++ May 06, 2024 pm 06:21 PM

So berechnen Sie den absoluten Wert in C++

See all articles