外语类 | 雅思 托福 四级 六级 专四专八 | 学历类 | 成考 高考 自考 考研 | 工程类 | 监理 质量 结构 安全 | 一级建造师 二级建造师 | 考试论坛
医学类 | 护士 药师 医师 外贸类 报关员 | 职业类 | 保险 司法 证券 导游 | 会计类 | 初级 中级 高级 注会 | 会计证考试 公务员考试 | 计算机类
考试动态 | 报考指南 | 国际认证RHCE(红帽认证) | 红旗认证 | 第三方认证LPI | 其它认证 | 综合辅导 | 心得技巧 | 考试培训 | 考试论坛
考试中国—计算机频道网址:it.kswchina.com 这里有:计算机的各种等级和认证考试,一级,二级,三级,四级等多种等级认证的考试资料。
您现在的位置: 考试中国 >> 计算机 >> Linux认证 >> 综合辅导 >> 正文 考试网中国:www.kswchina.com
利用多核多线程进行程序优化
更新时间:2008-11-19  Linux认证考试  收藏此文  收藏"考试中国"

  大家也许还记得 2005 年 3 月 C++ 大师 Herb Sutter 在 Dr.Dobb’s Journal 上发表了一篇名为《免费的午餐已经结束》的文章。文章指出:现在的程序员对效率、伸缩性、吞吐量等一系列性能指标相当忽视,很多性能问题都仰仗越来越快的 CPU 来解决。但 CPU 的速度在不久的将来,即将偏离摩尔定律的轨迹,并达到一定的极限。所以,越来越多的应用程序将不得不直面性能问题,而解决这些问题的办法就是采用并发编程技术。

  样例程序

  程序功能:求从1一直到 APPLE_MAX_VALUE (100000000) 相加累计的和,并赋值给 apple 的 a 和 b ;求 orange 数据结构中的 a[i]+b[i ] 的和,循环 ORANGE_MAX_VALUE (1000000) 次。

  说明:

  由于样例程序是从实际应用中抽象出来的模型,所以本文不会进行 test.a=test.b= test.b+sum 、中间变量(查找表)等类似的优化。

  以下所有程序片断均为部分代码,完整代码请参看本文最下面的附件。

  清单 1. 样例程序

  #define ORANGE_MAX_VALUE 1000000

  #define APPLE_MAX_VALUE 100000000

  #define MSECOND 1000000

  struct apple

  {

  unsigned long long a;

  unsigned long long b;

  };

  struct orange

  {

  int a[ORANGE_MAX_VALUE];

  int b[ORANGE_MAX_VALUE];

  };

  int main (int argc, const char * argv[]) {

  // insert code here...

  struct apple test;

  struct orange test1;

  for(sum=0;sum

  {

  test.a += sum;

  test.b += sum;

  }

  sum=0;

  for(index=0;index

  {

  sum += test1.a[index]+test1.b[index];

  }

  return 0;

  }

  K-Best 测量方法

  在检测程序运行时间这个复杂问题上,将采用 Randal E.Bryant 和 David R. O’Hallaron 提出的 K 次最优测量方法。假设重复的执行一个程序,并纪录 K 次最快的时间,如果发现测量的误差 ? 很小,那么用测量的最快值表示过程的真正执行时间,称这种方法为“ K 次最优(K-Best)方法”,要求设置三个参数:

  K: 要求在某个接近最快值范围内的测量值数量。

  ?: 测量值必须多大程度的接近,即测量值按照升序标号 V1, V2, V3, … , Vi, … ,同时必须满足(1+?)Vi ? Vk

  M: 在结束测试之前,测量值的最大数量。

  按照升序的方式维护一个 K 个最快时间的数组,对于每一个新的测量值,如果比当前 K 处的值更快,则用最新的值替换数组中的元素 K ,然后再进行升序排序,持续不断的进行该过程,并满足误差标准,此时就称测量值已经收敛。如果 M 次后,不能满足误差标准,则称为不能收敛。

  在接下来的所有试验中,采用 K=10,?=2%,M=200 来获取程序运行时间,同时也对 K 次最优测量方法进行了改进,不是采用最小值来表示程序执行的时间,而是采用 K 次测量值的平均值来表示程序的真正运行时间。由于采用的误差 ? 比较大,在所有试验程序的时间收集过程中,均能收敛,但也能说明问题。

  为了可移植性,采用 gettimeofday() 来获取系统时钟(system clock)时间,可以精确到微秒。

  

[1] [2] [3] [4] [5] 下一页

责任编辑:仰易
回全站首页      计算机考试专题--点击进入
相关文章
文件服务器上与恶意文件夹的战争
域服务器中域控制器中术语解析
巧用Bootrec.exe工具-解决和修复Vista启动问题
如何禁止在客户端安装软件的设置
微软认证:升级IE后右键菜单下载项失效
9种方式打造安全的WinServer2008
协同作战三招抓出系统启动蛀虫
着眼帐号,保障Vista系统安全
栏目推荐
微软认证真题
· 微软认证考试:70064Windows95考生回顾
· 微软的面试题及答案(超变态但很经典
· 微软认证考试:70064Windows95考生回顾
· 微软认证考试:70064Windows95考生回顾
· 微软认证考试:70064Windows95考生回顾
· [MCSE真题]正确配置IP地址以排错考题
Oracle认证真题
· 八、管理信息基本概念
· CCNA最新模拟考试题
· 网络管理员6道企业实战难题
· 思科Cisco认证最新真题50道:TCP/IP
· 关于Cisco路由协议题和答案(中文)
· Cisco试题库:ccna最新真题
Linux认证真题
· ubuntu常用命令集合
· 利用多核多线程进行程序优化
· 从Linux命令行更新Twitter和FriendFe
· 对话 UNIX: 更多 shell 脚本技术
· 不必害怕Ubuntu的命令行
· 4步用XAMPP快速搭建LAMP环境
JAVA认证真题
· JAVA题库:JAVA面试题目整理
· SCJP认证套题解析之二
· SCJP认证套题解析之一
· SCJP考试题310-025(第二套)
· SCJP考试题310-025(第二套<1>)18-147
· SCJP考试题310-025(第二套<3>)51-91/
网站简介 | 服务条款 | 汇款方式 | 广告合作 | 发布优势 | 招聘人才 | 隐私保护 | 合作伙伴 | 友情链接 | 网站导航 | 帮助中心 |
COPYRIGHT (C) 2003-2008 BEIJING KSWCHINA.COM INC ◎ 考试中国 ALL RIGHTS RESERVED.网站法律顾问:姚克枫律师
《中华人民共和国电信与信息服务业务》信息产业 京ICP备06046971号 技术支持:嘉瑞恒通(北京)科技有限公司。