golang
bestans
这个作者很懒,什么都没留下…
展开
-
golang pprof使用
通过交互终端使用# 下载 cpu profile,默认从当前开始收集 30s 的 cpu 使用情况,需要等待 30sgo tool pprof http://localhost:8888/debug/pprof/profile# wait 120sgo tool pprof http://localhost:8888/debug/pprof/profile?seconds=120 # 下载 heap profilego tool pprof http://localhost:8888/原创 2021-09-15 15:24:43 · 420 阅读 · 0 评论 -
golang语言优缺点 以及 性能知识点
优点并发简单、效率高函数可以返回多个参数垃圾回收(相比c/c++,java、c#都有这个优势)缺点没有继承,只有组合,无法写出多态类型功能没有异常处理不支持泛型,导致很多接口得写多遍原生数据结构太简单,没有sort map 、set、list等不支持参数重载函数访问权限太简单,public和private两种...原创 2020-04-02 11:38:46 · 749 阅读 · 0 评论 -
golang下极致性能socket开发
优化记录1. SendMessage时,一定是调用方将message转换为[]byte数据序列,避免在其他线程转换时引发并发问题2. socket写数据优化。socket写数据核心流程:message序列化->写入socket,有些socket库,存在重复拷贝的问题,基于核心流程,减少不必要的拷贝和内存分配,进行如下优化:每个连接定义一个write_buffer,用来减少tcp报文数...原创 2020-03-09 18:28:23 · 2248 阅读 · 0 评论 -
goroutine锁性能分析
背景goroutine是go语言并发利器,但是假如有goroutine A 和goroutine B需要同步执行某段程序,没有有效的措施,利用sync.Mutex加锁可以实现。但是sync.Mutex是锁线程的,不是锁协程,可能多个协程都在同一个线程下执行逻辑,协程A获取sync.Mutex锁后,这个线程的其他协程就要切换到别的线程执行逻辑了(go的底层做了处理,这些都是猜测的),这就会带来一定...原创 2020-02-03 23:05:50 · 677 阅读 · 1 评论