Apakah cara yang paling berkesan untuk mencetak tatasusunan dalam golang

王林
Lepaskan: 2024-02-10 09:30:23
ke hadapan
640 orang telah melayarinya

Apakah cara yang paling berkesan untuk mencetak tatasusunan dalam golang

Di Golang, cara paling berkesan untuk mencetak tatasusunan ialah menggunakan fungsi Println dalam pakej fmt. Dengan menghantar tatasusunan sebagai parameter kepada fungsi Println, ia secara automatik memformat dan mencetak kandungan tatasusunan. Kaedah ini sangat mudah dan cekap dan berfungsi untuk sebarang susunan saiz. Selain itu, Golang juga menyediakan beberapa kaedah lain untuk mencetak tatasusunan, seperti menggunakan fungsi Sertai dalam pakej rentetan untuk menyambungkan elemen tatasusunan ke dalam rentetan dan kemudian mencetaknya, atau menggunakan gelung untuk melintasi tatasusunan dan mencetak setiap elemen. Tetapi secara relatifnya, menggunakan fungsi Println secara langsung adalah kaedah yang paling mudah dan paling berkesan. Sama ada semasa pembangunan atau penyahpepijatan, tatasusunan pencetakan adalah operasi yang sangat biasa Menguasai kaedah yang paling berkesan boleh meningkatkan kecekapan pembangunan.

Kandungan soalan

Saya baru dalam pengaturcaraan dan ingin mengetahui lebih lanjut tentang fungsi terbina dalam:

Inilah programnya:

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

    fmt.println(os.args)

    fmt.println(time.since(start))
}
Salin selepas log masuk

dan outputnya:

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

Ini gelung untuk saya:

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))

}
Salin selepas log masuk

Keluaran adalah seperti berikut:

/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

Saya harap fungsi terbina dalam dalam perpustakaan standard lebih pantas.

Adakah menghiris menjadikan kod saya kurang cekap?

Perlukah saya menggunakan gelung for atau perpustakaan standardfmt.println?

Saya juga keliru strings.join(os.args[1:], " ") Bagaimana untuk melakukan 74.293μs

Penyelesaian

Gunakan penanda aras:

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, " ")
    }
}
Salin selepas log masuk
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
Salin selepas log masuk

Atas ialah kandungan terperinci Apakah cara yang paling berkesan untuk mencetak tatasusunan dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!