利用多核多线程进行程序优化简介:大家也许还记得2005年3月C++大师HerbSutter在Dr
Dobb’sJournal上发表了一篇名为《免费的午餐已经结束》的文章
文章指出:现在的程序员对效率、伸缩性、吞吐量等一系列性能指标相当忽视,很多性能问题都仰仗越来越快的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、中间变量(查找表)等类似的优化
以下所有程序片断均为部分代码,完整代码请参看本文最下面的附件
样例程序#defineORANGE_MAX_VALUE1000000#defineAPPLE_MAX_VALUE100000000#defineMSECOND1000000structapple{unsignedlonglonga;unsignedlonglongb;};structorange{inta[ORANGE_MAX_VALUE];intb[ORANGE_MAX_VALUE];};intmain(intargc,constchar*argv[]){//insertcodehere
structappletest;structorangetest1;for(sum=0;sum