這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
先說優點
- strings.Builder:省記憶體
- bytes.Buffer:快
效能測試程式
package benchmark_testimport ("bytes""strings""testing")var (ss = "1234567890abcdefghijklmnopqrstuvwxyz"bs = []byte(ss)rn = 'a'bt = byte('a'))func BenchmarkBuilderWrite(b *testing.B) {var builder strings.Builderfor i := 0; i < b.N; i++ {builder.Write(bs)}}func BenchmarkBuiderWriteByte(b *testing.B) {var builder strings.Builderfor i := 0; i < b.N; i++ {builder.WriteByte(bt)}}func BenchmarkBuilderWriteRune(b *testing.B) {var builder strings.Builderfor i := 0; i < b.N; i++ {builder.WriteRune(rn)}}func BenchmarkBuilderWriteString(b *testing.B) {var builder strings.Builderfor i := 0; i < b.N; i++ {builder.WriteString(ss)}}func BenchmarkBufferWrite(b *testing.B) {var buffer bytes.Bufferfor i := 0; i < b.N; i++ {buffer.Write(bs)}}func BenchmarkBufferWriteByte(b *testing.B) {var buffer bytes.Bufferfor i := 0; i < b.N; i++ {buffer.WriteByte(bt)}}func BenchmarkBufferWriteRune(b *testing.B) {var buffer bytes.Bufferfor i := 0; i < b.N; i++ {buffer.WriteRune(rn)}}func BenchmarkBufferWriteString(b *testing.B) {var buffer bytes.Bufferfor i := 0; i < b.N; i++ {buffer.WriteString(ss)}}