我用一个1024*1024的矩阵计算程序测试了一下,多线程的程序反而耗时更多(单核cpu)。而且我发现我的单线程程序运行时候,CPU占用几乎100%。所以很怀疑单核CPU下,多线程能否提高计算速度。
Java codefor(int i=0;i<1024;i++)
for(int j=0;j<1024;j++)
for(int t=0;t<1024;t++)
c[i][j]+=a[i][t]*b[t][j];
多线程实际上是把程序运行时切成很多时间片来执行,所以总的来说,运行时间是一样的
多线程实际上是把程序运行时切成很多时间片来执行,所以总的来说,运行时间是一样你这个程序多线程肯定不能提高速度。
相反,因为线程调度,还会降低速度。
对不同的求解问题,不同的算法,不同的实现方式,不同的人实现后的效率都会不同。但对于你的这种简单的问题肯定是单线程更快,毕竟少了线程间调度。而对复杂问题就需要考虑指令传输速度(核内,cpu与内存,内存与硬盘,核间,机器间等),并行效率(参考加速比),程序效率等诸多问题了。