这是我程序运行的结果
运行时间s 60006000 60008000 8000*8000
串行执行 1620.18 2305.55 4678.3
单核双线程 817.104 1121.43 2600.31
双核四线程 508.911 777.04 1887.17
四核八线程 459.259 866.199 1987.55
六核十二线程 425.268 920.565 2252.24
加速比 60006000 60008000 8000*8000
串行执行 1 1 1
单核双线程 1.983 2.056 1.799
双核四线程 3.184 2.967 2.479
四核八线程 3.528 2.662 2.354
六核十二线程 3.810 2.504 2.077
我的处理器是6核的 有12个逻辑处理器 所以我最大设置了12个线程并行
我想问一下为什么在没有线程切换的情况下 线程数量的增加反而会使执行降低?
目前主要的想法是因为线程把问题进行分块处理,这种分块是按照一定模式进行的,当线程数量增加时,可能导致每个线程的分块数量改变,先执行完的线程要等待未执行结束的线程,从而导致线程未充分利用,时间延长。但是这样考虑的话,问题分割是不是大小不变的呢?还是计算机有自己的处理算法?
请指教!