go 迭代string数组操作 go for string[]
go 迭代string数组,直接拷贝去用即可string与[]byte的直接转换是通过底层数据copy实现的。这种操作在并发量达到十万百万级别的时候会拖慢程序的处理速度通过gdb调试来看一下string和[]byte的数据结构转换后 [ ]byte 底层数组与原 string 内部指针并不相同,以此可确定数据被复制。那么,如不修改数据,仅转换类型,是否可避开复制,从而提升性能?从 ptype 输出的结构来看,string 可看做 [2]uintptr,而 [ ]byte 则是 [3]uintptr,这便于我们编写代码,无需额外定义结构类型。通过unsafe.Pointer和uintptr实现转换没有出现逃逸现象对比一下优化前后的性能差异没有额外开辟内存0B/op,执行效率:5亿次耗时1.6秒,而不用unsafe.Pointer和uintptr转换300次耗时久达到了1.1秒,效率对比高下立判
用户评论