当前位置: 首页 > news >正文

wordpress用户组名称快速网站seo效果

wordpress用户组名称,快速网站seo效果,广州海珠区景点排行榜前十名,天津建设工程信息往Golang详解string 文章目录 Golang详解stringGolang中为什么string是只读的?stirng和[]byte的转化原理[]byte转string一定需要内存拷贝吗?字符串拼接性能测试 Golang中为什么string是只读的? 在Go语言中,string其实就是一个结构体…

Golang详解string

文章目录

  • Golang详解string
    • Golang中为什么string是只读的?
    • stirng和[]byte的转化原理
    • []byte转string一定需要内存拷贝吗?
    • 字符串拼接性能测试

Golang中为什么string是只读的?

在Go语言中,string其实就是一个结构体,包含一个指向底层数组的指针和长度。字符串只读,在Go运行时能有效的管理内存分配,在创建字符串后不可修改,那么字符串就固定在内存中了,就可以消除跟踪和管理字符串修改的复杂性了。同时,在多线程的环境下,不可变性让字符串避免数据竞争和一致性问题,不需要额外的同步处理了。

stirng和[]byte的转化原理

从string的底层结构就知道是不可扩容的,string和[]byte的区别就是在[]byte中多了个容量,所以string转[]byte和[]byte转string都是进行内存的拷贝,指针数据和长度的匹配。

[]byte转string一定需要内存拷贝吗?

如果[]byte转string是临时场景,那么就不需要内存拷贝。就比如;

  1. 字符串拼接,临时使用
  2. 查找数据,临时使用
  3. 用于比较,临时使用

字符串拼接性能测试

Golang中常用的字符串拼接:

  1. strings.Builder
  2. strings.Join
  3. (加号) +
  4. fmt.Sprintf
  5. append
package mainimport ("bytes""fmt""strings""testing"
)var loremIpsm = `It is a highly competitive world. One can feel the existence of competition everywhere, from the classroom to the job-hunting market. Looking for a fair opportunity to prove one's ability has become a matter of survival.If one wants to survive and to be successful in such a challenging society, one must learn to face the competition bravely`var strSlice = make([]string, LIMIT)const LIMIT = 1000func init() {for i := 0; i < LIMIT; i++ {strSlice[i] = loremIpsm}
}// 进行压力测试
// +
func BenchmarkOperator(b *testing.B) {for i := 0; i < b.N; i++ {var q stringfor _, s := range strSlice {q = q + s}}b.ReportAllocs()
}// Sprintf
func BenchmarkSprintf(b *testing.B) {for i := 0; i < b.N; i++ {var q stringfor _, s := range strSlice {q = fmt.Sprintf(q, s)}}b.ReportAllocs()
}// strings.Join
func BenchmarkJoin(b *testing.B) {for i := 0; i < b.N; i++ {strings.Join(strSlice, "")}b.ReportAllocs()
}// bytes.Buffer
func BenchmarkBuffer(b *testing.B) {for i := 0; i < b.N; i++ {var q bytes.Bufferq.Grow(len(loremIpsm) * len(strSlice))for _, s := range strSlice {q.WriteString(s)}}b.ReportAllocs()
}// append
func BenchmarkAppend(b *testing.B) {for i := 0; i < b.N; i++ {var q []bytefor _, s := range strSlice {q = append(q, s...)}}b.ReportAllocs()
}// strings.Builder
func BenchmarkBuilder(b *testing.B) {for i := 0; i < b.N; i++ {var q strings.Builderq.Grow(len(loremIpsm) * len(strSlice))for _, s := range strSlice {q.WriteString(s)}}b.ReportAllocs()
}

测试结果:
在这里插入图片描述

可以看到性能比较好的是strings.Builder、strings.Join、bytes.Buffer这三个性能相比之下比较高。

如果大量字符串进行拼接时建议使用以上性能好的拼接方式,如果是少量的字符串用+比较方便。fmt.Sprintf性能最差,它一般用于格式化返回字符串而不是拼接。

http://www.shuangfujiaoyu.com/news/56800.html

相关文章:

  • 湛江定制建站企业网站上海牛巨微seo优化
  • wordpress设计网站外链平台有哪些
  • 平台网站建设的公司域名信息查询系统
  • 个人域名 做公司网站营销软文范文200字
  • 魔站网站建设网站一键生成
  • wordpress添加一个tag页面济南网站优化排名推广
  • 聚名网络seo研究协会
  • web动态网页设计源代码德阳seo优化
  • 做网站建设的平台seo快速建站
  • 做跨境电商的人才网站关键词排名霸屏代做
  • 800折网站怎么做苏州网络推广服务
  • 外贸公司的网站怎么做网络运营好学吗
  • 天津招标信息网官网宁波seo关键词培训
  • wordpress建站和使用提升关键词
  • 做网站放什么软件磁力天堂最佳搜索引擎入口
  • 宝鸡网站建设公司不知怎么入门
  • 做网站需要域名跟服务器吗百度认证平台
  • 网站建设订单模板下载西安搜建站科技网站
  • 如何做网站结构优化关键词在线试听免费
  • 微官网站怎么做软文有哪几种类型
  • 本地wordpress站点上传网站收录查询爱站
  • 怎么新建自己的网站2345网址导航主页
  • 网站建设与管理必修网站搜索引擎优化方法
  • 做详情页上什么网站找素材腾讯云域名
  • 3g网站是什么意思廊坊seo建站
  • 唐山海港开发区人才网武汉seo百度
  • 公安局网站源码域名备案查询系统
  • 做wow宏的网站友情链接图片
  • wordpress同步空间佛山seo优化外包
  • 齐诺网站建设项目推广方式有哪些