我目前正在优化用于并行执行的数据处理逻辑。我注意到,随着核心数量的增加-数据处理性能并不一定会增加我认为应该的方式。
结果如下:
从结果集中可以看到,通过使用2个内核而不是1个内核,您可以获得几乎理想的性能提升(事实是,其中1个内核在运行4700Mhz
,而4600Mhz
每个2个内核在运行)。
此后,当应该在3个内核上并行处理数据时,我预计与2个内核执行相比,性能将提高33%。实际增长21.62%。
接下来,随着核心数量的增加-“并行”执行性能的下降持续增加。
最后,当我们有12个核心结果时-actual
与ideal
结果之间的差异是原来的两倍多(96442ms与39610ms)!
我当然没想到差异会如此之大。我有一个Intel 8700k
处理器。6个物理核心和6个逻辑核心-共有12个线程。1个内核以Turbo模式,2C 4600、3C 4500、4C 4400、5-6C 4400、6C 4300在Turbo模式下以4700Mhz运行。
如果很重要-我在以下地方做了其他观察Core-temp
:
当1个核心处理正在运行时-6个核心中有1个繁忙50%
当2个核心处理正在运行时-6个核心中有2个繁忙50%
当运行3个核心处理时-6个核心中有3个繁忙50%
当4个核心处理正在运行时-6个核心中有4个繁忙50%
当5个核心处理正在运行时-6个核心中有5个繁忙50%
当6个核心处理正在运行时-6个核心中有6个繁忙50%
当7个核心处理正在运行时-6个核心中有5个繁忙50%,1个核心100%
当8个核心处理正在运行时-6个核心中有4个繁忙50%,2个核心100%
当9个核心处理正在运行时-6个核心中有3个繁忙50%,3个核心100%
当运行10个核心处理时-6个核心中有2个繁忙50%,4个核心100%
当11个核心处理正在运行时-6个核心中有1个繁忙50%,5个核心100%
当运行12个核心处理时-所有6个核心的运行率均为100%
我当然可以看到最终结果不应该像ideal
结果那样好,因为每个内核的频率降低了,但是仍然如此。.是否有很好的解释说明为什么我的代码在12个内核上的性能如此差?这是每台计算机上的普遍情况,还是PC的局限性?
LEATH
叮当猫咪
相关分类