Java多核cpu多线程运行效率分析
2016-03-16 12:14
537 查看
一直以为java线程开得越多效率越高,后来知道了执行的效率和cpu核心数有关,今天试了下多核cpu下多线程的计算:
本机i5四核,分别开启1、4、10、20、40、100、400个线程做100W次,md5运算,结果如下:
threadSize是并发的线程数,section是每个线程进行的md5运算数。
线程数在10-20之间效率最高
cpu使用情况:
单个线程:
4个线程:
10个线程:
20个线程:
40线程:
100线程:
400线程:
如图所示:
1.单线程程序也会导致多个cpu的使用率上升,猜想是因为单个线程挤占了系统其它进程的cpu资源,导致这些系统进程在其它的cpu上开销增加。
2.在10-20个线程时,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对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- Python3写爬虫(四)多线程实现数据爬取
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序