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

新西兰做网站代购/软文营销范文100字

新西兰做网站代购,软文营销范文100字,淘宝官方网站登录注册,娄底做网站的公司golang原生的数据结构map,由于是通过hash方式实现的,不支持并发写入,但是在golang很多并发场景中,不可避免的需要写入map,下面介绍两种解决map并发写入的实现方式: sync.Mutex互斥锁(通过加锁解…

golang原生的数据结构map,由于是通过hash方式实现的,不支持并发写入,但是在golang很多并发场景中,不可避免的需要写入map,下面介绍两种解决map并发写入的实现方式:

  1. sync.Mutex互斥锁(通过加锁解锁解决map不能并发写入的问题)
  2. chan (通过管道来解决map并发的问题),chan的存在完美解决goroutine之间的通信以及数据race问题,但是它的性能如何呢,下面让我们来测一下

首先先上代码:

package main

import (
"testing"
"sync"
)

func BenchmarkTest(b *testing.B) {
var m = make(map[int]int, 10000)
var mu = &sync.Mutex{}
var c = make(chan int, 200)
var w = &sync.WaitGroup{}

w.Add(b.N)
b.ResetTimer()
for i := 0; i < b.N; i++ {
c <- 1
go func(index int) {
mu.Lock()
m[index] = 0
mu.Unlock()
w.Done()
<- c
}(i)
}
w.Wait()
}

func BenchmarkTestBlock(b *testing.B) {
var m = make(map[int]int, 10000)
var c = make(chan int, 200)
var dataChan = make(chan int, 200)
var w = &sync.WaitGroup{}

w.Add(b.N+1)
go func() {
for i := 0; i < b.N; i++ {
m[<- dataChan] = 0
}
w.Done()
}()

b.ResetTimer()
for i := 0; i < b.N; i++ {
c<-1
go func(index int) {
dataChan <- index
w.Done()
<-c
}(i)
}
w.Wait()
}

代码很简洁,我就不多解释了。

看一下执行效率    

 

可以看到,chan的实现方式其性能并不理想,比sync.Mutex的实现方式的效率低了大约25%左右。 

chan的效率为什么不理想呢,其实原因很简单,下面看一下它的数据结构就一目了然了

package mainimport ("fmt"
)func main() {s := "hello, world!"b := []byte(s)c := make(chan int, 1)c<-1fmt.Println(s, b, <-c)
}

 

我们可以看到channel的实现是通过互斥锁和数组的方式实现的,而且还有一些其他字段的同步,因此它的效率是不会比直接用互斥锁更快的。

很多看上去很高端很简洁的东西,其实是编辑器和runtime在后面为我们码农实现,当然与之相来是额外的内存和时间开销。

 

转载于:https://www.cnblogs.com/shuiyuejiangnan/p/9722791.html

http://www.lbrq.cn/news/1413883.html

相关文章:

  • 网站服务器 要求/卖链接的网站
  • 网站建设选哪个好/唐山seo快速排名
  • 做网站销售怎么开发客户/app拉新推广平台
  • 大岭山网站仿做/站长工具之家
  • 怎么利用国外网站做互联网挣钱/推广搜索怎么选关键词
  • 网站建设 标准/公众号怎么推广
  • 联系我们_网站制作公司/推广引流工具
  • 老男孩linux网站/seo网站推广方案策划书
  • 教学网站/seo优化报价公司
  • 做彩票网站需要什么技术/做一个公司网站需要多少钱
  • 建设自己的网站怎么做/公司推广方案
  • 软件网站建设基本流程/百度商家平台登录
  • 易语言和网站做交互/不死鸟分享友情链接
  • 知名的集团门户网站建设企业/全球网站流量排名查询
  • 免费跨境电商网站/营销策略分析
  • 北京市海淀区网站建设/网络销售平台有哪些软件
  • 网站设计文档/百度学术论文查重官网入口
  • wordpress没有样式/广州seo优化推广
  • 西安手机网站建设公司/电商sem是什么意思
  • 做全网影视网站的风险/如何进行搜索引擎的优化
  • 上海最专业的集团网站建设/培训后的收获和感想
  • 做网站的经历/谷歌流量代理代理
  • 研究生网站建设/武汉seo推广
  • 从零开始网站建设/百度一下你就知道 官网
  • 广告网架/seo推广软件
  • 微信公众平台怎么做微网站/sem是什么意思
  • 哪些网站可以接单做/网站统计平台
  • 商业网站的建设流程/市场营销公司排名
  • 网站制作客户寻找/申请域名的方法和流程
  • 网站怎么做seo、/上海服务政策调整
  • 【深度长文】Anthropic发布Prompt Engineering全新指南
  • AI 在金融领域的落地案例
  • bun + vite7 的结合,孕育的 Robot Admin 【靓仔出道】(十三)
  • Kafka的ISR、OSR、AR详解
  • Linux817 shell:until,nfs,random
  • linux中已经启用的命令和替代命令