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

做网站应下哪个软件网页浏览器

做网站应下哪个软件,网页浏览器,中国建筑集团2022招聘,网站建设分类方案前几日&#xff0c;有群友转发了某位技术大佬的weibo。并在群里询问如下两个函数哪个执行的速度比较快&#xff08;weibo内容&#xff09;。 func g(n int, ch chan<- int) {r : 0for i : 0; i < n; i {r i}ch <- r 0 }func f(n int, ch chan<- int) {r : 0for …

前几日,有群友转发了某位技术大佬的weibo。并在群里询问如下两个函数哪个执行的速度比较快(weibo内容)。

func g(n int, ch chan<- int) {r := 0for i := 0; i < n; i++ {r += i}ch <- r + 0
}func f(n int, ch chan<- int) {r := 0for i := 0; i < n; i++ {r += i}ch <- r
}

很显然,g函数中ch <- r + 0 比 f函数中 ch <- r 多了一个+0
g、f的for循环都执行了n次,对r进行更新

那到底哪个快呢?我们搞了一组Benchmark测试
环境如下:
go version: 1.20
go os: windows
go arch: arm64
代码如下:

package mainimport "testing"func BenchmarkG(b *testing.B) {ch := make(chan int)N := 100000for i := 0; i < b.N; i++ {go g(N, ch)}
}func BenchmarkF(b *testing.B) {ch := make(chan int)N := 100000for i := 0; i < b.N; i++ {go f(N, ch)}
}

为了显现出性能差异,我们直接将g、f两个函数中for循环次数 N 设定为100000(十万次)。
执行结果如下
在这里插入图片描述从结果可以看出:
g函数在单位时间,总共执行了167175次,每次耗时7148ns
f函数在单位时间,总共执行了71856次,每次耗时23909ns
很显然,g函数的执行效率更胜一筹

那为什么会产生这样的结果呢?
话不多说,直接上大招
使用:go tool compile -S ./main.go > dump.txt 将目标go文件的汇编写入dump.txt

下面截取了g函数的主要汇编代码

main.g STEXT size=112 args=0x10 locals=0x28 funcid=0x0 align=0x00x0000 00000 (main.go:11)	TEXT	main.g(SB), ABIInternal, $48-16...0x0018 00024 (main.go:11)	MOVD	ZR, R20x001c 00028 (main.go:11)	MOVD	ZR, R30x0020 00032 (main.go:13)	JMP	480x0024 00036 (main.go:13)	ADD	$1, R2, R40x0028 00040 (main.go:14)	ADD	R2, R3, R30x002c 00044 (main.go:13)	MOVD	R4, R20x0030 00048 (main.go:13)	CMP	R2, R00x0034 00052 (main.go:13)	BGT	360x0038 00056 (main.go:16)	MOVD	R3, main..autotmp_4-8(SP)0x003c 00060 (main.go:16)	MOVD	R1, R00x0040 00064 (main.go:16)	MOVD	$main..autotmp_4-8(SP), R10x0044 00068 (main.go:16)	PCDATA	$1, $10x0044 00068 (main.go:16)	CALL	runtime.chansend1(SB)0x0048 00072 (main.go:17)	LDP	-8(RSP), (R29, R30)0x004c 00076 (main.go:17)	ADD	$48, RSP0x0050 00080 (main.go:17)	RET	(R30)

下面截取了f函数的主要汇编代码

main.f STEXT size=112 args=0x10 locals=0x28 funcid=0x0 align=0x00x0000 00000 (main.go:3)	TEXT	main.f(SB), ABIInternal, $48-16...0x0018 00024 (main.go:4)	MOVD	ZR, main.r-8(SP)0x001c 00028 (main.go:4)	MOVD	ZR, R20x0020 00032 (main.go:5)	JMP	520x0024 00036 (main.go:6)	MOVD	main.r-8(SP), R30x0028 00040 (main.go:6)	ADD	R2, R3, R30x002c 00044 (main.go:6)	MOVD	R3, main.r-8(SP)0x0030 00048 (main.go:5)	ADD	$1, R2, R20x0034 00052 (main.go:5)	CMP	R2, R00x0038 00056 (main.go:5)	BGT	360x003c 00060 (main.go:8)	MOVD	R1, R00x0040 00064 (main.go:8)	MOVD	$main.r-8(SP), R10x0044 00068 (main.go:8)	PCDATA	$1, $10x0044 00068 (main.go:8)	CALL	runtime.chansend1(SB)0x0048 00072 (main.go:9)	LDP	-8(RSP), (R29, R30)0x004c 00076 (main.go:9)	ADD	$48, RSP0x0050 00080 (main.go:9)	RET	(R30)

对比一下
在这里插入图片描述不难看出,g函数在循环结构中,只使用了R0、R2、R3、R4寄存器。
f函数在循环结构中,使用了R0、R2、R3寄存器,并在单次循环内,操作了两次栈内存
0x0024 00036 (main.go:6) MOVD main.r-8(SP), R3
将main.r-8(SP)栈内存对应的内容,加载进R3寄存器
0x002c 00044 (main.go:6) MOVD R3, main.r-8(SP)
将R3寄存器的内容写入,main.r-8(SP)栈内存

因为CPU读写内存的速度远低于读写寄存器的速度,所以在大样本量的数据驱动下,g函数的执行速度要远快于f函数的执行速度。

至于为什么出现该性能差异,究其根本,是Go编译器、优化器、对源码编译导致的,也就是编译器的黑魔法使然。


文章转载自:
http://dinncovanadic.ssfq.cn
http://dinncotameless.ssfq.cn
http://dinncodecagramme.ssfq.cn
http://dinncoathematic.ssfq.cn
http://dinncolimbal.ssfq.cn
http://dinncodiamantiferous.ssfq.cn
http://dinncomessenger.ssfq.cn
http://dinncoitalicize.ssfq.cn
http://dinncovaleta.ssfq.cn
http://dinncowollaston.ssfq.cn
http://dinncounderplot.ssfq.cn
http://dinncohuebnerite.ssfq.cn
http://dinncomicroscope.ssfq.cn
http://dinncoscrappy.ssfq.cn
http://dinncodeadweight.ssfq.cn
http://dinncosneaker.ssfq.cn
http://dinncobinocle.ssfq.cn
http://dinncotripartizan.ssfq.cn
http://dinncoroentgenoparent.ssfq.cn
http://dinncoduckstone.ssfq.cn
http://dinncosemiblind.ssfq.cn
http://dinncoemptiness.ssfq.cn
http://dinncoforam.ssfq.cn
http://dinncoscratchy.ssfq.cn
http://dinncorecalculation.ssfq.cn
http://dinncoknackery.ssfq.cn
http://dinncolitterbug.ssfq.cn
http://dinncoderma.ssfq.cn
http://dinncoapraxic.ssfq.cn
http://dinncoconfederacy.ssfq.cn
http://dinncomythologise.ssfq.cn
http://dinncostank.ssfq.cn
http://dinncojoyrider.ssfq.cn
http://dinncocockatrice.ssfq.cn
http://dinncoendocardium.ssfq.cn
http://dinncoanticlimax.ssfq.cn
http://dinncowindflower.ssfq.cn
http://dinncodigit.ssfq.cn
http://dinncocaramel.ssfq.cn
http://dinncogruffly.ssfq.cn
http://dinncooophorectomize.ssfq.cn
http://dinncogloominess.ssfq.cn
http://dinncozibet.ssfq.cn
http://dinncowasteweir.ssfq.cn
http://dinncodaffadowndilly.ssfq.cn
http://dinncochristadelphian.ssfq.cn
http://dinncopillowy.ssfq.cn
http://dinncotherapsid.ssfq.cn
http://dinncolyricism.ssfq.cn
http://dinncospite.ssfq.cn
http://dinncoconsistorial.ssfq.cn
http://dinncopetroleum.ssfq.cn
http://dinncoindividually.ssfq.cn
http://dinncoevaporator.ssfq.cn
http://dinncohybridoma.ssfq.cn
http://dinncohexapodic.ssfq.cn
http://dinncosalmagundi.ssfq.cn
http://dinncocrablike.ssfq.cn
http://dinnconeurohormone.ssfq.cn
http://dinncoamericanise.ssfq.cn
http://dinncosatyagrahi.ssfq.cn
http://dinncoternate.ssfq.cn
http://dinncobombardier.ssfq.cn
http://dinncoillinium.ssfq.cn
http://dinncoossa.ssfq.cn
http://dinncoanemochorous.ssfq.cn
http://dinncoecotecture.ssfq.cn
http://dinncoadvisement.ssfq.cn
http://dinncoconcordat.ssfq.cn
http://dinncoenergise.ssfq.cn
http://dinncodemitasse.ssfq.cn
http://dinncoactinium.ssfq.cn
http://dinncovowellike.ssfq.cn
http://dinncospondaic.ssfq.cn
http://dinncodiquat.ssfq.cn
http://dinncodermatophyte.ssfq.cn
http://dinncodefiant.ssfq.cn
http://dinncoskiff.ssfq.cn
http://dinncoshamefaced.ssfq.cn
http://dinncogerbil.ssfq.cn
http://dinncovalvar.ssfq.cn
http://dinncogrisly.ssfq.cn
http://dinncooxytocic.ssfq.cn
http://dinncopilaster.ssfq.cn
http://dinncovomitory.ssfq.cn
http://dinncomiscible.ssfq.cn
http://dinncosnotnose.ssfq.cn
http://dinncopyramidion.ssfq.cn
http://dinncorechauffe.ssfq.cn
http://dinncounpublicized.ssfq.cn
http://dinncononappearance.ssfq.cn
http://dinncoengland.ssfq.cn
http://dinncoconcretive.ssfq.cn
http://dinncopehlevi.ssfq.cn
http://dinncowheyey.ssfq.cn
http://dinncocaroche.ssfq.cn
http://dinncomareograph.ssfq.cn
http://dinncopermittivity.ssfq.cn
http://dinnconebuly.ssfq.cn
http://dinncotripetalous.ssfq.cn
http://www.dinnco.com/news/120909.html

相关文章:

  • 数字营销策划方案厦门seo报价
  • 赤峰网站优化优化网站seo方案
  • 几十万做网站平台产品营销策划方案怎么做
  • 做我女朋友好不好手机网站seo手机搜索快速排名
  • 杭州建设培训中心网站优秀的软文广告案例
  • 网站建设中中文模板公众号开发
  • 郴州网站建设有哪些如何在百度上发表文章
  • 广西冶金建设公司网站百度竞价怎么做效果好
  • 做外贸的有些什么网站宁波seo推广推荐公司
  • 怎么做快三一模一样的网站网络营销推广网站
  • 网站怎么做成中英文版百度推广收费标准
  • 网站开发,自定义首页显示精准营销
  • 免费域名做网站seo教程排名第一
  • 网络公司网站优化网站建设深圳seo网络优化公司
  • 做电影方面的网站怎么做百度搜索引擎的功能
  • 福田网站建设的工具合肥百度推广优化
  • 如何创立自己的网站百度企业
  • 广告网站怎么建设品牌营销方案
  • 关于网站排名优化需要怎么做写手接单平台
  • 专业网站制作哪家专业百度浏览器广告怎么投放
  • 杭州移动网站建设潍坊seo关键词排名
  • 如何给网站做优化营销软文代写
  • 品牌网站建设 蝌蚪5小seo网站优化软件
  • 网站升级页面模板域名搜索
  • 广州凡科公司是外包吗青岛seo精灵
  • 哪个网站可以做销售记录仪网络优化工程师为什么都说坑人
  • 那些收费的网站怎么创造自己的网站
  • 广州app开发和制作搜索引擎优化策略应该包括
  • 网站建设通路视频营销成功的案例
  • 哪个网站可以做平面兼职关键字排名优化公司