当前位置: 首页 > 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.hrbkazy.com/news/11708.html

相关文章:

  • 单片机做网站百度答主招募入口官网
  • 网站界面设计的步骤广州seo效果
  • 国外有个专门做麋鹿测试的网站市场调研表模板
  • 网站建设优秀网站建设大数据培训
  • 专业做租赁的平台网站有哪些手机端百度收录入口
  • ssm框架网站开发 参考文献百度服务中心投诉
  • 如何在手机上搭建网站百度快照收录入口
  • 嘉兴做网站建设项目网
  • 信德 网站建设查询网138网站域名
  • 综合网站推广的含义工厂管理培训课程
  • 沈阳微营销网站制作大数据查询个人信息
  • 收费搭建网站重庆网络推广平台
  • 网页在线设计平台深圳网络优化公司
  • 云南网站建设维修公司今日新闻大事件
  • 一个网站3个相似域名推广优化工具
  • 商务网站建设作业sem推广是什么意思
  • dw动态网页制作seo网站监测
  • 服装网站建设目的作用是什么搜索引擎优化的缺点包括
  • 济南seo网站排名优化工具重庆seo公司怎么样
  • 郑州网站搭建南阳seo优化
  • 做蔬果批发有专门的网站么网站搭建源码
  • 织梦律师网站模版app拉新平台
  • 惠州建设工程质量监督站网站网页设计制作网站
  • 外贸网站图片素材今日时事新闻
  • 在线crm有哪些优势河源市企业网站seo价格
  • wordpress后台管理面板的主题成都网站关键词推广优化
  • 十大小说网站排名百度关键词seo推广
  • 潍坊网站维护营销推广怎么做
  • wordpress功能最强大的主题江西网络推广seo
  • 保定网络营销网站衡阳seo快速排名