如何提高cpulol怎样提高运行速度度

如何提高多线程程序的cpu利用率 - DoubleLi - 博客园
正如大家所知道的那样,多核多cpu越来越普遍了,而且编写多线程程序也是件很简单的事情。在Windows下面,调用CreateThread函数一次就能够以你想要的函数地址新建一个子线程运行。然后,事情确实你发现创建多线程根本没有让程序快多少,也没有提高多少cpu利用率,甚至可能让cpu利用率下降。唯一能够确定的是多线程能够避免界面假死。为什么会是这样的了。本文将举一些例子和讲述一些原因。&&首先,我来讲一下多处理的一些知识。如下图所示,&&多处理器系统也只有一个待运行的线程队列,内存中也只有一个操作系统拷贝,而且也只有一个内存系统,但是会有多个cpu同时运行不同的线程。一个cpu运行一个线程,那么上图中的系统最多能在同一时间运行2个线程。其实,多处理系统需要掌握的知识不是这些,而是缓存一致性。&&现在来解释下什么是缓存一致性。由于,还是只有一个内存系统。所有cpu都要和这个内存系统通信,但是只有一条总线,那么这无疑会造成总线紧张,限制整体的速度了。那么,你多个cpu也没多少意义了。解决这个问题的办法还是利用cpu的缓存机制,学过组成原理的同学都知道,cpu的缓存命中率还是很高的,有90%以上吧。那么,我继续利用缓存机制还是可以降低总线的频繁使用的。但是,每个cpu都有自己的缓存。如果有2个cpu的缓存存储的是同一内存数据的内容,其中一个cpu的缓存更新了,另外一个cpu的缓存也必须更新,这就是所谓的缓存一致性。编程多线程程序的一个很重要的一点就是避免因为缓存一致性引起的缓存更新风暴。&&现在我举一个缓存更新风暴的例子。如图所示的类定义,&&锁lockHttp和lockSsl中间只有8个字节,而绝大部分系统上一个缓存行是128个字节,那么这2个锁很可能就处在同一个缓存行上面。那么,最坏的情况会发生什么事情了。假设处理器P1在运行一个处理http请求的线程T1,处理器P2在运行一个处理ssl请求的线程T2,那么当T1获得锁lockHttp的时候,锁的内容就会改变,为了保持缓存一致性,就会更新P2的缓存。那么,T2要获得锁lockssl的时候,发现缓存已经失效了,就必须从内存中重新加载缓存之类。总之,这会将缓存命中率降低到90%以下,引起性能的严重降低。而且发生这种事情的原因是因为我们不了解硬件的体系结构。&&多cpu不能成倍提高速度的原因是任务的某些部分是必须串行处理的。比如,矩阵乘法可以分为三个部分,初始化矩阵,相乘,返回结果。这三部分第二部分可以用多线程来处理,第一部分和第三部分则是不可以的。而且第二部分必须在第一部分完成之后,第三部分必须在第一部分完成之后。那么,无论你添加多少个处理器,最快的时间都至少是第一部分和第二部分的时间之和。这个事实好像叫做Amdahl法则。&&如果使用多线程,那么就必须考虑线程同步,而线程同步又是导致速度降低的关键。所以下面就讲述一些方法来加快多线程程序的吞吐速度。&&方法一,把一个任务分解为多个可以子任务。&&因为总有些子任务是可以并发的,多个子任务并发执行了很可能就能够避免cpu需要io操作的完成了,而且能够提高系统的吞吐量。&&方法二,缓存多线程的共享数据。&&当你已经在使用多线程了,很多时候必须使用共享数据。如果,数据是只读的,那么可以在第一次获取后保存起来,以后就可以重复使用了。但是,第一次的获取还是无法避免的需要线程同步操作的。&&方法三,如果线程数目有限,就不要共享数据。&&做法是为每一个线程实例化一个单独的数据,其实就是为每一个线程分配一块数据使用。这样没有线程同步操作了,速度可以尽可能的提示。&&方法四,如果没办法确定线程数目到底有多少,那么使用部分共享吧。&&部分共享其实就是使用多个资源池代替一个资源池,资源池的数目得更加经验来确定。如下图所示,
&&最后在提一个叫做Thundering Herd的问题,该问题维基百科有定义。大意是,当多个线程在等待一个资源的时候,如果事件等待到了,操作系统是唤醒所有等待的线程让它们自己去竞争资源了还是选择一个线程把资源给它。当然唤醒所有的线程肯定开销要大,而且所有没有抢到资源的线程还得重新进入等待状态,这无疑造成很多没必要的操作,浪费了没必要的线程上下文切换。总之,会不会存在Thundering Herd还是跟不同的操作系统有关的。万一存在Thundering Herd了,多线程可能就没那么好办了。&&到现在我们知道了为什么多cpu并不能成倍提高程序的速度了。首先因为有些任务无法并行,其次即使是并行cpu之间还是有很多牵制的。本书的内容主要来自提高c++性能的编程技术一书。在Win7下怎么设置才会提高CPU的速度_百度知道
在Win7下怎么设置才会提高CPU的速度
我有更好的答案
1、Win+R键,打开“运行”对话框,输入msconfig,打开“系统配置”,点击“引导选项卡”。2、在弹出的“引导高级选项”对话框中勾选处理器数,Windows 7系统默认情况下处理器个数为1,如果你是双核用户,在下拉菜单里选择处理器的数目,比如双核就选择“2”,并勾选最大内存选项。3、修改完毕后,点击“确定”按钮,保存设置退出即可需要说明的一点是,通过设置能够让Win7合理利用多核心处理器,但提高的速度并不会有想象中的那么明显。不用过分迷信通过此方法能够大幅提高运行速度,根据自己处理器的实际核心数进行设置即可.
网络管理与维护
并勾选最大内存选项,请在此对话框中切换到“引导”标签,然后单击图中红圈处的“高级选项”按钮,保存设置退出即可。 虽然现在Windows7系统优化提速的软件。 2、在弹出的“引导高级选项”对话框中勾选处理器数,那么在Win7下应该怎么设置才能提升多核CPU的速度呢,Windows7系统默认情况下处理器个数为1,如果你是双核用户,在双核CPU启动过程中、点击开始菜单,在“搜索程序和文件”中输入“msconfig”,回车即打开“系统配置”对话框,弹出引导高级选项对话框。 3、修改完毕后,点击“确定”按钮,在下拉菜单里选择处理器的数目,比如双核就选择“2”,就不能发挥多核CPU的性能现在的CPU都是双核CPU,而Windows7对多核CPU有着良好的支持,但是这些软件往往会“由于优化过头,导致部分系统功能丢失”,因此我们还是使用win7内在的设置来提升多核CPU的速度,如果没有进行适当的设置,下面来看看笔者怎么去提高多核CPU的速度。 1
本回答被提问者采纳
为您推荐:
其他类似问题
win7的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。多核条件下,怎样充分利用cpu提高运算速度。
[问题点数:10分,结帖人pww71]
多核条件下,怎样充分利用cpu提高运算速度。
[问题点数:10分,结帖人pww71]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|提高Win7系统CPU运行速度的方法-系统城·电脑系统下载之家
当前位置: &
& 提高Win7系统CPU运行速度的方法
提高Win7系统CPU运行速度的方法
  提高Win7系统CPU运行速度的方法,现在笔记本都配有双核的CPU,而Win 7也能够很好的支持多核CPU,但如果没有对Win7进行设置,无论是双核还是多核CPU都无法发挥其应有的速度,那么该怎么样进行Win7设置才能提高CPU的速度呢?一起来学习一下吧!
  1、首先点击win7开始按钮;
  2、在开始菜单的搜索框中输入Msconfig并回车,即可打开系统配置对话框;
  3、将系统配置对话框切换到引导选项标签;
  4、点击高级项按钮,弹出引导高级选项对话框;
  5、在对话框中勾选处理器数,在下拉菜单里选择处理器的数目,比如双核就选择2;
  6、勾选最大内存选项,然后点击确定返回,重启计算机。
  以上步骤非常简单,大家不妨试一下吧,经测试可以让电脑启动速度提高大约20%左右哦,赶紧动手设置吧,提高Win7系统CPU运行速度的方法就跟大家分享到这里了,我们将继续为大家呈现更多精彩内容和教程,欢迎继续关注系统城!
我要分享:
提高Win7系统CPU运行速度的方法相关教程
热&门推&荐
&热门教程推荐
12345678910
&热门系统专题
&Win7系统推荐
&|&&|&本站发布的系统与软件仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,否则后果自负,请支持购买微软正版软件!
如侵犯到您的权益,请及时通知我们,我们会及时处理。
Copyright @ 2011 系统城当前位置: >
win7系统提升系统性能和运行速度的方法
时间: 18:41来源: 作者:admin浏览:次
相关推荐:
win7系统教程
热门系统教程
烟雾头的效果就是穿透烟雾,...
热门系统下载
最新系统下载
热门软件下载
Copyright©2016
(http://www.nwmie.com.cn/) 版权所有 粤ICP备号
本站发布的系统与软件仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,否则后果自负,请支持购买微软正版软件!
如侵犯到您的权益,请及时通知我们,我们会及时处理。}

我要回帖

更多关于 怎么提高cpu性能 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信