您的位置:首页 > 编程语言 > Java开发

Java多核cpu多线程运行效率分析

2016-03-16 12:14 537 查看
一直以为java线程开得越多效率越高,后来知道了执行的效率和cpu核心数有关,今天试了下多核cpu下多线程的计算:

本机i5四核,分别开启1、4、10、20、40、100、400个线程做100W次,md5运算,结果如下:

全部任务执行完毕,总耗时:38368ms,threadSize:1,section:1000000
全部任务执行完毕,总耗时:17293ms,threadSize:4,section:250000
全部任务执行完毕,总耗时:15107ms,threadSize:10,section:100000
全部任务执行完毕,总耗时:15019ms,threadSize:20,section:50000
全部任务执行完毕,总耗时:16115ms,threadSize:40,section:25000
全部任务执行完毕,总耗时:22014ms,threadSize:100,section:10000
全部任务执行完毕,总耗时:40431ms,threadSize:400,section:2500

threadSize是并发的线程数,section是每个线程进行的md5运算数。

线程数在10-20之间效率最高

cpu使用情况:

单个线程:



4个线程:



10个线程:



20个线程:



40线程:



100线程:



400线程:



如图所示:

1.单线程程序也会导致多个cpu的使用率上升,猜想是因为单个线程挤占了系统其它进程的cpu资源,导致这些系统进程在其它的cpu上开销增加。

2.在10-20个线程时,cpu的上升平滑稳定,而到了上百个线程时,cpu的使用率波动比较大,可能是频繁的任务调度造成的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 多线程 多核