paip.提升性能--多核cpu中的java/.net/php/c++编程 作者Attilax  艾龙,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.csdn.net/attilax 目前情况 需要一个处理50w行的文件,按行进行分词..需要50s才能完成.. 经过调试,瓶颈在这个代码上... TokenStream ts = Analyzer.tokenStream("", reader); 换成IKSegmenter方式,还是一样., // IKSegmenter ik=new IKSegmenter(reader, true); 机器环境:win7 64bit..cpu双核,2.7g...内存8g 查看cpu使用,仅仅使用了1个cpu,另外一个空闲着了...要全部使用了,性能应该能行提升2倍了..   使用多线程来提升多核cpu的性能.. 多核随着硬件的不断升级,作为计算机核心的CPU也改头换面,成为一颗多心的家伙。设计它的专家声称这可以最大限度地提高程序的运行效率。但事实真的如此吗?众所周知,现在的程序大多都是基于单线程而设计的,然而这种设计模式如果在主频高的单核CPU上运行,效率是非常高的。但它并不能很好地协调多核一起工作。 更不幸的是单线程的程序在多核CPU上运行甚至可能会没有单核CPU快。 当然,就目前而言,要解决这种性能软瓶颈的最佳方法就是本专题所讨论的多线程编程。只有充分利用这种技术,才能发挥多核的最大潜力。好了,就说到这吧,最后让我们利用本专题所讲的内容尽情地享受多核给我们带来的惊喜和刺激吧! 2、线程分解和执行的区别: 对单核CPU,对客户端软件,采用多线程,主要是 创建多线程将一些计算放在后台执行,而不影响用户交互操作。(用户界面 & 其他计算 并行进行)提高用户的操作性能! 多核中,分别出多个线程,不再限于将用户界面操作和其他计算分离。分解多个线程使为了让计算分配到各CPU上执行。执行线程数量与CPU核数有关!如果线程数小于核数,某些CPU肯定处于空闲状态。 3、CPU核负载平衡: 单核中不考虑 负载平衡,各个线程计算量相差很大,也不会影响程序总计算时间。 多核中,必须考虑将各个线程计算量均衡到各CPU 7、串行计算与并行计算、分布式计算的区别 单核多线程编程中,都是串行算法。用不到并行计算,更用不到分布式计算 多核编程中,多采用 并行计算 和 分布式计算 并行计算=并行设计模式+并行算法 分布式计算复杂度 > 并行计算的复杂度 > 串行计算复杂度 并行计算:只考虑计算并行地执行,不考虑线程间的竞争导致CPU饥饿 分布式计算:相比并行计算,能更好解决CPU饥饿,使计算均衡地分配任务到各内核 /代码如下: 经过测试,因为仅仅有2个cpu核心,走凯里2个线程..果然,2个cpu占用都块道理100%的兰,时间一挂噪城里原来的一半儿..25s走ok兰... List lica7 = fc.fileRead2list(sourceTxt, "utf-8"); int mid = lica7.size() / 2; final List lica7_half1 = lica7.subList(0, mid); List lica7_half2 = lica7.subList(mid, lica7.size()); new Thread>>>> lica7_half1_result = ftc.fentsiMuilttheard(lica7_half1, wordLibs, "thd1"); half1_isfinesh=true; //main thread //wait 4 half_thread_finish //habin lyag list.. /true code. List lica7_half1_result; boolean half1_isfinesh=false; /** * @author attilax 1466519819@qq.com * @param sourceTxt * @param targetTxt * @param wordLibs *            for file line >5w bacause 50w time tooo long ,gujyi *            1min...muset rewrite jeig swefa. * @since cae */ public void fentsi4bigfile(String sourceTxt, String targetTxt, final String wordLibs) { // String wordLibs = // "c:\\wordFromInputmethod.txt,c:\\word.txt,c:\\ext.txt"; // String sourceTxt = "c:\\sincin.txt"; // String targetTxt = "c:\\fentsiOK.txt"; int n = 0; List li_r = new ArrayList(); fileC0 fc = new fileC0(); // String text = fc.fileRead(sourceTxt); // if(true)return; List lica7 = fc.fileRead2list(sourceTxt, "utf-8"); int mid = lica7.size() / 2; final List lica7_half1 = lica7.subList(0, mid); List lica7_half2 = lica7.subList(mid, lica7.size()); List lica7_half2_result; // n = fentsiMuilttheard(wordLibs, n, lica7); new Thread(new Runnable() { public void run() { try { fentsiOr ftc = new fentsiOr(); lica7_half1_result = ftc.fentsiMuilttheard(lica7_half1, wordLibs, "thd1"); half1_isfinesh=true; } catch (Exception e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName()); } }).start(); //main thread fentsiOr ftc = new fentsiOr(); lica7_half2_result = ftc.fentsiMuilttheard(lica7_half2, wordLibs, "thd_main"); //stop whiel half is not ok int nn = 0; while (true) { if (half1_isfinesh) { break; } nn++; try { Thread.sleep(50); System.out.println("--sleep 500 ,num:" + nn); } catch (InterruptedException e) { e.printStackTrace(); throw new RuntimeException(e); } } List li_all=new ArrayList(); li_all.addAll(lica7_half1_result); li_all.addAll(lica7_half2_result);  fc.saveList2file(li_all, targetTxt, "utf-8"); } 参考: 多核编程 与 单核多线程编程的区别 - 点滴记录 不断进步 - 博客频道 - CSDN.NET.htm

php 多核cpu,paip.提升性能--多核cpu中的java/.net/php/c++编程相关推荐

  1. paip. 提升性能---hibernate的缓存使用 总结

    paip. 提升性能---hibernate的缓存使用 总结 作者Attilax  艾龙,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog ...

  2. paip.提升性能----硬盘不同转速不同缓存对比转

    paip.提升性能----硬盘不同转速不同缓存对比转 西数 WDC WD2500BEVT-08A23T1 ( 250 GB / 5400 转/分 ) 5400转 8M缓存 单碟250 GB 产品   ...

  3. 如何利用多核CPU提高虚拟现实性能?

    虚拟现实引领新时代令人惊喜的新体验,但也带来了各种新的挑战.其中之一就是虚拟现实应用"耗能"问题. 虚拟现实挑战了图形和仿真技术,以至于创造优秀虚拟现实体验的硬件需求成为日前热点. ...

  4. CPU怎么选择,单核cpu与多核cpu的区别

    CPU是一台计算机的运算核心和控制核心.CPU主要功能是解释计算机指令以及处理计算机软件中的数据.CPU由运算器.控制器和寄存器及实现它们之间联系的数据.控制及状态的总线构成. cpu怎么选 1.核心 ...

  5. c++ 多核cpu序列号_详解CPU几个重点基础知识

    作者 | 骏马金龙 责编 | 阿秃 关于CPU和程序的执行 1.程序的运行过程,实际上是程序涉及到的.未涉及到的一大堆的指令的执行过程. 当程序要执行的部分被装载到内存后,CPU要从内存中取出指令,然 ...

  6. CPU知识(CPU个数、CPU核心数、CPU线程数、多核CPU等)

    CPU知识(CPU个数.CPU核心数.CPU线程数.多核CPU等 CPU个数.CPU核心数.CPU线程数 多核CPU 单核多CPU与多核单CPU 今天看到服务器中有8核8线程和8核16线程的区分,觉得 ...

  7. 查看服务器CPU的个数、CPU的核数、多核超线程数

    查看服务器CPU的个数.CPU的核数.多核超线程数 这里有几个概念: 1.一台物理机的物理CPU的个数 2.一个CPU上的核数 3.一个核上面支持的线程数 有下面的计算公式: 总核数 = 物理CPU个 ...

  8. 计算机硬件性能提升定律,❤️多核编程·笔记

    --------------------------第一讲------------------------------ (一)70年代 问题:人们都还在用汇编,程序无法移植,难以维护. 解决方法:出现 ...

  9. linux 多核cpu监控,Linux 下多核CPU知识

    1. 在Linux下,如何确认是多核或多CPU: #cat /proc/cpuinfo 如果有多个类似以下的项目,则为多核或多CPU: processor  : 0 ...... processor  ...

最新文章

  1. 从起源、变体到评价指标,一文解读NLP的注意力机制
  2. AI一分钟 | 刚爆Python将进入高考,AI就已强势进入公务员国考试卷;报告称1/4男性更喜欢跟机器人谈恋爱,真的吗?
  3. php中文网地址多少,计算机网络中有几种地址格式
  4. java 制作小游戏_如何用java制作小游戏
  5. SAP C4C OData服务的filter,客户端分页和排序的使用方式
  6. 5d4的白平衡模式_佳能5D4有什么白平衡模式?ISO是多少?
  7. 铃木uy125摩托车机油_UY125 新瑞梦UM125发布 济南铃木于湖南株洲吹响国IV集结号...
  8. Python3 爬虫学习笔记 C01 【基本库 urllib 的使用】
  9. c#官方推荐md5通用加密类
  10. Autorun 文件结构
  11. 状态反馈控制与状态观测器设置以及利用LQR方法求取状态反馈矩阵
  12. 图解三层交换机:局域网都用它来组网
  13. VirtualBox中虚拟机IP地址相同
  14. 5G基本原理/5G NR的关键技术
  15. C#上位机工作感想2(2020.4.15-2021.7.24)
  16. xp计算机组策略怎么打开,WinXP系统打开组策略的命令是什么?
  17. 长三角江浙沪有影响力的调查研究咨询公司
  18. centos 安装virt-mannager
  19. python求解立方根_求解立方根
  20. 移动应用开发技术选择六要素

热门文章

  1. Android左右声道切换流程
  2. Re:LieF ~親愛なるあなたへ~ 后感
  3. 22. 地下城与勇士
  4. 云服务器配置选择方法
  5. MyBatis多对多关系映射
  6. word2003 字体和标点重叠在一起
  7. 百度charts_NBA Shot Charts:更新
  8. 使用Windows服务启动C#桌面应用程序问题解决
  9. 等了15年,这本编程巨著终于出版了!
  10. 达奇机器人编程学院_Wonder Workshop Dash Robot 达奇STEM编程机器人 中英文双语版