Parallel processing 对于CRYSTAL lang应用程序来说,CRYSTAL_WORKERS默认值为4似乎太低了吗?还有谁的基准更高?

Parallel processing 对于CRYSTAL lang应用程序来说,CRYSTAL_WORKERS默认值为4似乎太低了吗?还有谁的基准更高?,parallel-processing,benchmarking,crystal-lang,fibers,Parallel Processing,Benchmarking,Crystal Lang,Fibers,我很高兴Crystal lang现在具有多线程功能。有没有其他人为Crystal lang做过多线程基准测试;如果是这样,您认为哪些CRYSTAL_员工对您的基准测试有益?(是的,我知道,每个基准都是不同的,所以里程可能会有所不同。) CRYSTAL_WORKERS的默认值为4,但似乎应该更多,至少在更高核心的系统上是这样。导致4值的基准可能与当时使用的内核数量的副作用有关吗 我在8核(Intel)和16核(AMD)CPU上做了一些斐波那契比较,得到了一些较大的峰谷模式()。(对于简单的

我很高兴Crystal lang现在具有多线程功能。有没有其他人为Crystal lang做过多线程基准测试;如果是这样,您认为哪些CRYSTAL_员工对您的基准测试有益?(是的,我知道,每个基准都是不同的,所以里程可能会有所不同。)

CRYSTAL_WORKERS的默认值为4,但似乎应该更多,至少在更高核心的系统上是这样。导致
4
值的基准可能与当时使用的内核数量的副作用有关吗


我在8核(Intel)和16核(AMD)CPU上做了一些斐波那契比较,得到了一些较大的峰谷模式()。(对于简单的计算/转换,光纤/etc的开销似乎不值得;但对于计算强度更高的代码,如Fibinaci Calc,具有更高CRYSTAL工作者值的光纤和
相同线程:false
似乎有潜在帮助。)

这个问题没有答案。工作人员的数量在很大程度上取决于应用程序的类型以及运行时系统上资源的可用性/管理

当然,当您的系统有4个以上的内核时,您可能需要一个更高的数字,以便使用更多的可用计算能力。但您不一定要使所有内核饱和,这取决于系统上运行的其他内核。特别是IO绑定的应用程序不一定会从拥有太多工作线程中获益。因此,设置
CRYSTAL\u WORKERS=$(NPROC)
可能不是一个好主意

CRYSTAL\u WORKERS=4
只是一个默认值,因为需要一个。这是一个非常常见的默认值,因为a)它应该比单线程执行提供合理的改进,b)现代CPU通常至少有4个内核


当您将应用程序部署到运行时系统时,需要考虑什么是特定环境的合适的工作人员数,并相应地配置它。使用不同的默认值不会有任何帮助。

对于用户来说,这可能是一个更好的问题。事实上,我们有一个关于多线程支持的基准测试。