我目前正在编写一个编码器,并且(显然)想让它变得更快。
我有一个工作系统来进行编码(所以每个 goroutine 都在做同样的事情),但我正在努力寻找合适数量的 goroutine 来运行代码。我基本上想决定保持最大数量的 Goroutines CPU 忙。
下面的想法掠过我的脑海:
如果一个文件只有 <1 kB,那么在很多 goroutine 中运行代码是没有用的
goroutines 的数量应该受可用的核心/线程的影响
在 4x4 GHz CPU 上运行 16 个 goroutine 不会有问题,但在 4x1 GHz CPU 上呢?
难以确定可靠的跨平台
CPU 应该很忙,但不要忙到阻止其他程序响应(~70-ish %?)
由于时钟速度和其他参数,很难事先决定
现在我尝试根据这些因素来决定使用多少个 goroutine,但我不太确定如何跨平台并以可靠的方式这样做。
已经尝试过:
使用线性函数根据文件大小确定
需要基于 CPU 的不同功能
从 lscpu 解析 CPU 规格
不跨平台
需要另一个函数来根据频率确定
这并不令人满意。
长风秋雁
相关分类