Rumah >pembangunan bahagian belakang >Golang >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.
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)) }
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)) }
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
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, " ") } }
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
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!