V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  lesismal  ›  全部回复第 4 页 / 共 63 页
回复总数  1252
1  2  3  4  5  6  7  8  9  10 ... 63  
49 天前
回复了 IIInsomnia 创建的主题 Go 编程语言 从 0 到 1 手撸一个协程池
@kuanat #14 基本上就是有需要限制协程数量的地方需要这个, 比如海量并发 epoll+逻辑协程池, 比如不同业务模块的协程池(例如常见的连接池)

没有限制协程数量的需求的场景, 硬要用协程池代替 go func 的基本都是画蛇添足
50 天前
回复了 chenfang 创建的主题 程序员 redis 逆天问题 每多少分钟限制多少次
lua 成熟的实现应该挺多的,golang 里这个就可以,拿去用你的语言调用就可以了:
https://github.com/go-redis/redis_rate/blob/v10/lua.go
50 天前
回复了 IIInsomnia 创建的主题 Go 编程语言 从 0 到 1 手撸一个协程池
扫了一眼 OP 的这个协程池,练手可以,但建议还是参考下 #9 吧
50 天前
回复了 IIInsomnia 创建的主题 Go 编程语言 从 0 到 1 手撸一个协程池
另外,协程池做性能测试需要考虑不同的业务场景特点,比如:
1. 任务的消耗类型和消耗时长
2. 协程池 size 、并发度

不同的测试参数,不同的协程池的压测数据可能各有快慢,要考虑实际的业务特点,用某个测试参数就得出某个或者某些协程池最快的结论是不太准确的。

一些库的作者自己宣称自己的库性能第一,但结论并不准确。
比如某些网络库号称自己 tcp 比标准库快、但其实可能是他的压测例子里自己的库的 write buffer size 大、标准库的 write buffer size 小,导致标准库浪费更多 syscall ,然后得出比标准库快的结论。
比如某些网络库号称自己的 http 拿过“天梯”第一,但其实他的压测用例只是实现了简单的 http 头和尾的判断,根本没法处理完整 http 协议或功能,拿去对比别人完整功能的框架,然后得到个第一的跑分,但作者自己知道、天体跑分仓库的 owner 也知道。但这种结果拿来给自己的仓库做宣传并且没有明确说明,就有点误导用户了

测试方法不严谨或者测试参数不全面、不同框架的配置、测试参数不统一,就不能得出准确的结论,用户们应该自己去多看几眼、多自己跑代码测试一下,别轻信仓库官方自己声明的数据、不管官方是大厂还是个人开发者、也不管仓库主要作者是中国还是外国背景(因为都可能有类似问题)。
50 天前
回复了 IIInsomnia 创建的主题 Go 编程语言 从 0 到 1 手撸一个协程池
按照协程是否常驻,目前主要分两大类:

### 一、idle 协程常驻
1. ants ,好象是常驻协程 cond_t 方式实现
2. 常驻协程+chan 的多种方式

goroutine 比较轻量,runtime 自己就有协程复用相关的,所以每次 go 创建新协程其实成本不大,所以常驻协程未必就是好事情,反倒是常驻协程额外的 chan 或者 cond_t 会有相对一点性能损失以及常驻的内存开销
我和一些小伙伴对各种协程池做压测,想比喻非常驻协程的方案,ants 并不具有性能优势

### 二、idle 协程不常驻
1. 字节的 gopool 这种:协程数量控制+任务队列的方式。当前协程数量没有达到最大则新任务直接创建协程执行,每个协程执行完当前也都会检查队列里是否有新的任务、如果有继续取出任务执行、否则协程退出。如果当前协程数量达到最大值就加入队列等待被执行。字节 gopool 的队列用的 list ,其他实现也有复用 slice 的

goppol 避免了常驻协程的内存开销,协程用完就归还给 runtime ,清爽轻量,没有额外的 chan 、cond_t 之类的操作的损失、性能好,但缺点是 gopool 这种实现的队列,再并发任务数量巨大、任务执行较慢时,会导致队列 size 爆炸性增长,没办法像 chan 那样自然限流去实现系统平衡

2. nbio 的协程池,协类似 gopool 但队列替换成了一个常驻协程+chan 。任务协程数量没达到最大值时新任务直接创建新协程执行、否则加到 chan 队列里,只有一个常驻协程+chan 做队列可以实现自然限流( chan 满了阻塞、自动反馈给调用方)。任务协程用完就还给 runtime ,1 个常驻协程成本也很低,也弥补了 gopool 那种限流缺陷,比较平衡。
51 天前
回复了 FanyFull 创建的主题 生活 三万六千块人民币的房子能住吗?
@Hookery 评论符合 ID, sixsixsix
54 天前
回复了 eachann 创建的主题 Apple m4 mini 连夜装完后索然无味
贤者时间是这样的
学学怎么"扣"吧
先把价格打下来
63 天前
回复了 sbldehanhan 创建的主题 MacBook Pro M4 mbp 硬盘选 512G 还是 1T?
64G 1T 起步, 可以战 5 年
16G/512G 明年又想换 ( 明年是指 2 个月后, 甚至更短时间后 )
@lasuar Can't agree more!
如果不用 orm, 可以试试我这个 github.com/lesismal/sqlw
拉满更香
65 天前
回复了 brader 创建的主题 程序员 现在有部分前端真的水到家了
OP 可以好好修行下技术跳槽到好点的公司, 然后就可以较大程度避免这种队友了
这个度数不高, 如果年纪不是过大晶状体弹性太差, 可以趁早上欧欧眼保仪, 七八成的机会能把近视治好, 但一定要坚持使用它锻炼睫状肌, 坚持用, 效果挺好的.
个体差异, 不一定对每个人都有效, 价格小贵, 好像也有租的服务, ,如果不放心, 可以先看看他们介绍的原理再做决定. 用机器的好处是相比于自己看训练的视频或者自己锻炼那些能屏蔽不少干扰, 效果更好更专业, 但如果你有足够的耐心坚持自己自然训练法之类的, 不用机器也可以的
付费的课程多数都还可以, 免费的那些省钱费时间效果没多好
这么多人说行, 听得我都心动了
74 天前
回复了 momowei 创建的主题 Go 编程语言 go 的内存优势在部分场景比想象中多
@james122333 如果有兴趣, #109 里的链接 "2022 Go 生态圈 rpc 框架 Benchmark" 这个帖子的性能对比可以看下, 性能强的基础上, 功能也比其他的 rpc 更丰富, 场景支撑能力更强, 扩展性也极强, codec, 中间件, 协议编解码都可以扩展. star 不如他们多不代表库没有他们好, 写得晚, 而且我个人没有大厂团队那么大的能量去推广罢了
1  2  3  4  5  6  7  8  9  10 ... 63  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5512 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 40ms · UTC 06:57 · PVG 14:57 · LAX 22:57 · JFK 01:57
Developed with CodeLauncher
♥ Do have faith in what you're doing.