四. Go 高性能编程相关问题
文章平均质量分 79
Go 高性能编程相关问题
苹果香蕉西红柿
这个作者很懒,什么都没留下…
展开
-
go 进阶 八. 标准库之context
context虽然实现父协程对子协程的管理,但是这种管理方式是比较粗暴的,直接关闭,而且关闭时根本不知道子协程的执行结果。总之,对子协程的管理不够细致化,必要时需要在字协程退出时用defer做下退出处理,或者你可以使用waitGroup这种,对协程的执行结果有个明确的了解注意点:不要把Context放在结构体中,要以参数的方式显示传递以Context作为参数的函数方法,应该把Context作为第一个参数。原创 2023-05-12 09:08:12 · 127 阅读 · 0 评论 -
十三. go 高性能编程之 sync.Once如何提升性能
查看sync.Once底层Once结构体中的done属性: done 在热路径中,done 放在第一个字段,能够减少 CPU 指令,也就是说,这样做能够提升性:热路径(hot path)是程序非常频繁执行的一系列指令,sync.Once 绝大部分场景都会访问 o.done,在热路径上是比较好理解的,如果 hot path 编译后的机器码指令更少,更直接,必然是能够提升性能的。为什么放在第一个字段就能够减少指令呢?原创 2023-05-05 09:15:10 · 143 阅读 · 0 评论 -
十二. go 高性能编程之 sync.Pool的复用对象
【代码】十二. go 高性能编程之 sync.Pool的复用对象。原创 2023-05-05 09:14:50 · 153 阅读 · 0 评论 -
十一. go 高性能编程之 控制协程并发数量
【代码】十一. go 高性能编程之 控制协程并发数量。原创 2023-05-04 10:01:18 · 193 阅读 · 0 评论 -
十. go 高性能编程之 其它场景何退出协程 goroutine
情形二:一个接收者和N个发送者,此唯一接收者通过关闭一个额外的信号通道来通知发送者不要再发送数据了。情形三:M个接收者和N个发送者,它们中的任何协程都可以让一个中间调解协程帮忙发出停止数据传送的信号。情形一:M个接收者和一个发送者,发送者通过关闭用来传输数据的通道来传递发送结束信号。原创 2023-05-04 10:00:57 · 70 阅读 · 0 评论 -
九. go 高性能编程之 超时场景如何退出协程 goroutine
【代码】九. go 高性能编程之 超时场景如何退出协程 goroutine。原创 2023-05-05 09:14:11 · 437 阅读 · 0 评论 -
八. go 高性能编程之 读写锁和互斥锁的性能比较
RUnlock 释放读锁。Unlock 释放写锁。原创 2023-05-04 10:07:50 · 235 阅读 · 0 评论 -
七. go 高性能编程之 struct 内存对齐
【代码】七. go 高性能编程之 struct 内存对齐。原创 2023-05-04 10:06:45 · 109 阅读 · 0 评论 -
六. go 高性能编程之 空结构体 struct{} 的使用
Go 语言中,可以使用 unsafe.Sizeof 计算出一个数据类型实例需要占用的字节数。原创 2023-05-04 10:06:27 · 268 阅读 · 1 评论 -
五. go 高性能编程之 反射与性能
【代码】五. go 高性能编程之 反射与性能。原创 2023-05-04 10:06:07 · 179 阅读 · 0 评论 -
四. go 高性能编程之 for 和 range 的性能比较
range 在迭代过程中返回的是迭代值的拷贝,如果每次迭代的元素的内存占用很低,那么 for 和 range 的性能几乎是一样,例如 []int。但是如果迭代的元素内存占用较高,例如一个包含很多属性的 struct 结构体,那么 for 的性能将显著地高于 range,有时候甚至会有上千倍的性能差异。对于这种场景,建议使用 for,如果使用 range,建议只迭代下标,通过下标访问迭代值,这种使用方式和 for 就没有区别了。原创 2023-05-04 10:06:13 · 135 阅读 · 0 评论 -
三. go 高性能编程之 切片性能问题
insert 和 append 类似。即在某个位置添加一个元素后,将该位置后面的元素再 append 回去。复杂度为 O(N)。因此,不适合大量随机插入的场景。T 即元素类型,第二个参数是长度 len,即初始化的切片拥有多少个元素,第三个参数是容量 cap,容量是可选参数,默认等于长度。当原切片不会再被使用时,就地 filter 方式是比较推荐的,可以节省内存空间。原创 2023-05-04 10:05:10 · 123 阅读 · 0 评论 -
二. go 高性能编程之 字符串拼接问题
【代码】二. go 高性能编程之 字符串拼接问题。原创 2023-05-04 10:04:23 · 247 阅读 · 0 评论