- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JAVA并发编程:性能 扩展性和响应
1、介绍 本文讨论的重点在于多线程应用程序的性能问题。我们会先给性能和扩展性下一个定义,然 后再仔细学习一下Amdahl法则。下面的内容我们会考察一下如何用不同的技术方法来减 少锁竞争,以及如何用代码来实现。 2、性能 我们都知道,多线程可以用来提高程序的性能,背后的原因在于我们有多核的CPU或多个 CPU。每个CPU 的内核都可以自己完成任务,因此把一个大的任务分解成一系列的可彼此 独立运行的小任务就可以提高程序的整体性能了。可以举个例子,比如有个程序用来将硬盘 上某个文件夹下的所有图片的尺寸进行修改,应用多线程技术就可以提高它的性能。使用单 线程的方式只能依次遍历所有图片文件并且执行修改,如果我们的CPU有多个核心的话, 毫无疑问,它只能利用其中的一个核。使用多线程的方式的话,我们可以让一个生产者线程 扫描文件系统把每个图片都添加到一个队列中,然后用多个工作线程来执行这些任务。如果 我们的工作线程的数量和CPU总的核心数一样的话,我们就能保证每个CPU核心都有活可 干,直到任务被全部执行完成。 对于另外一种需要较多IO 等待的程序来说,利用多线程技术也能提高整体性能。假设我们 要写这样一个程序,需要抓取某个网站的所有HTML文件,并且将它们存储到本地磁盘上。 程序可以从某一个网页开始,然后解析这个网页中所有指向本网站的链接,然后依次抓取这 些链接,这样周而复始。因为从我们对远程网站发起请求到接收到所有的网页数据需要等待 一段时间,所以我们可以将此任务交给多个线程来执行。让一个或稍微更多一点的线程来解 析已经收到的HTML 网页以及将找到的链接放入队列中,让其他所有的线程负责请求获取 页面。与上一个例子不同的是,在这个例子中,你即便使用多于CPU核心数量的线程也仍 然能够获得性能提升。 上面这两个例子告诉我们,高性能就是在短的时间窗口内做尽量多的事情。这个当然是对性 能一词的最经典解释了。但是同时,使用线程也能很好地提升我们程序的响应速度。想象我 们有这样一个图形界面的应用程序,上方有一个输入框,输入框下面有一个名字叫 处理 “ ” 的按钮。当用户按下这个按钮的时候,应用程序需要重新对按钮的状态进行渲染 (按钮看起 来被按下了,当松开鼠标左键时又恢复原状),并且开始对用户的输入进行处理。如果处理 用户输入的这个任务比较耗时的话,单线程的程序就无法继续响应用户其他的输入动作了, 比如,来自操作系统传送过来的用户单击鼠标事件或鼠标指针移动事件等等,这些事件的响 应需要有独立的线程来响应。 可扩展性 ( )的意思是程序具备这样的能力:通过添加计算资源就可以获得更高 Scalability 的性能。想象我们需要调整很多图片的大小,因为我们机器的CPU核心数是有限的,所以 增加线程数量并不总能相应提高性能。相反,因为调度器需要负责更多线程的创建和关闭, 也会占用CPU 资源,反而有可能降低性能。 2.1Amdahl法则 上一段提到了在某些情形下,添加额外的运算资源可以提高程序的整体性能。为了能够计算 出当我们添加了额外的资源的时候到底能获得多少性能提升,我们有必要来检查一下程序有 哪些部分是串行运行 (或同步运行),有哪些部分是并行运行的。如果我们把需要同步执行 的代码占比量化为B (例如,需要同步执行的代码的行数),把CPU 的总核心数记为n, 那么,根据Amdahl法则,我们可以获得的性能提升的上限是: 如果 趋于无穷大的话, 就收敛于 。因此,我们可以忽略这个表达式的值,因此 n (1-B)/n 0 性能提升位数收敛于 ,这里面的 代表是那些必须同步运行的代码比例。如果 等于 1/B B B 的话,那意味着程序的一半代码无法并行运行, 的倒数是 ,因此,即使我们添加 0.5 0.5 2 无数个 核心,我们获得的性能提升也最多是 倍。假设我们现在把程序修改了一下, CPU 2 修改之后只有0.25 的代码必须同步运行,现在1/0.25=4
您可能关注的文档
最近下载
- 电力市场分析软件:PLEXOS二次开发_(18).与其他软件系统的集成.docx VIP
- PLEXOS for Renewables 可再生能源仿真应用场景.pdf VIP
- 洼田饮水评分操作要点.pptx VIP
- 涉密工程必威体育官网网址工作方案(3篇).docx VIP
- 2023年第37届中国化学奥林匹克决赛试题完整版(两套含答案解析) .pdf VIP
- 2025年顶管施工试题及答案.docx
- 中国共产党党内监督条例_学习解读ppt完整版.pptx VIP
- 光大金瓯资产管理有限公司招聘笔试题库2024.pdf
- 电力市场分析软件:PLEXOS二次开发_(16).风险评估与管理.docx VIP
- 新凯来光学技术笔试题.docx VIP
文档评论(0)