字符串数据结构先是有底层的字节数组,保存helloworld,然后标准头对象有个指针指向字节数组开始位置,有个长度。这样的结构看上去有点像切片,区别在于没有容量,因为字符串一旦创建之后,它是只读的,在只读的情况下容量含义没有意义了,因为没有扩容的可能。所以字符串与切片具备一定的结构重叠。
那么我们需要字符串类型转换的时候,普通的转换是string
转换为[]byte
或者[]ruce
,[]byte
或者[]ruce
进行修改,修改完再转换为string
。这样做需要做两次内存分配操作,第一次不可变到可变做一次内存分配,然后可变到不可变再做一次内存分配,很显然这种类型转换效果很差。
既然数据结构上存在相似性,如果我能保证数据安全的情况下,我们能不能通过别的方式提供性能优化呢?那么说下简单的转换方式。
假如一个原始字符串,它是动态创建的,并不是保存在rodata里,比如访问客户端返回的,不会保存在rodata里而会保存在堆上面,也就意味着字节数组
本文发布于:2024-02-01 00:33:12,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170671879432528.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |