美文网首页golang 编程笔记
【golang】性能优化--字符串

【golang】性能优化--字符串

作者: dongzd | 来源:发表于2020-08-04 15:09 被阅读0次

使用[]byte代替string

字符串

字符串是一系列8位字节的集合,默认初始化值为"",同时字符串的值是不可以改变的。其数据结构为:

type stringHeader struct {
            data unsafe.Pointer
            len int
}

[]byte

byte是int8的别名,区别于rune是int32别名。其数据结构为:
type sliceHeader struct{
data unsafe.Pointer
len int
cap int
}

[]byte相比于string的优点

字符串的值是不可以改变的,但是字符串内部指向数据的指针,是可以被替换的。

s := "123"
s = 456

以上在给s重新赋值456时候,会从新开辟一块内存,替换原来存储123的内存地址,之前分配的内存等待系统gc。而对于[]byte是可以更改内容的

s :=[]byte{1}
s=[]byte{2}

以上内容更改不会重新开辟内存。所以在大量字符串操作使用byte代替可以很好的优化系统性能。

string相对于[]byte的好处

string是可以直接比较的,而[]byte不可以,[]byte不可以当作map键值。

善用bytes.Buffer来追加string

当需要拼接一个字符串时候使用a+=b,连接效率底下,尤其在大量使用情况下,者导致大量内存开销和拷贝,使用字符数组,用缓存向其添加

var buf bytes.Buffer
buf.WriteString(str)
fmt.Println(b.String())

但是最好的优化,就是不优化,如果为了增加那么一丁点性能,降低代码可读性,不如不优化。

相关文章

  • 【golang】性能优化--字符串

    使用[]byte代替string 字符串 字符串是一系列8位字节的集合,默认初始化值为"",同时字符串的值是不可以...

  • golang 几种字符串的连接方式

    最近在做性能优化,有个函数里面的耗时特别长,看里面的操作大多是一些字符串拼接的操作,而字符串拼接在 golang ...

  • 【golang】性能优化

    1.内存管理 在栈中创建对象比在堆中创建对象性能高,少用new来创建对象,多用object{}创建,如果需要创建大...

  • golang 性能优化实战

    调优基本思路 对外接口协议不能改变 了解需求和代码演进过程 确定资源消耗类型 控制运算数据输入量 提高 CPU 利...

  • golang profile用法

    概要 profile就是定时采样,收集cpu,内存等信息,进而给出性能优化指导,golang 官方提供了golan...

  • golang profile用法

    概要 profile就是定时采样,收集cpu,内存等信息,进而给出性能优化指导,golang 官方提供了golan...

  • 你所不知道的Java性能优化之String!

    Java性能优化之String字符串优化 1.字符串对象及其特点 Java中八大基本数据类型没有String类型,...

  • python性能优化和pyinstaller使用

    Python 性能优化常见技巧有:改进算法选择合适的数据结构;并行编程;减少冗余数据;循环优化;字符串的优化;函数...

  • Android性能优化 - 消除卡顿

    性能优化系列阅读 Android性能优化 性能优化 - 消除卡顿 性能优化 - 内存优化 性能分析工具 - Tra...

  • Android性能优化 - 内存优化

    性能优化系列阅读 Android性能优化 性能优化 - 消除卡顿 性能优化- 内存优化 性能分析工具 - Trac...

网友评论

    本文标题:【golang】性能优化--字符串

    本文链接:https://www.haomeiwen.com/subject/xkqlrktx.html