2008年(3500)
分类:
2008-05-04 23:25:44
Henrik Engström【注1】却不这么认为!在他最近发表的blog中,他强调“新的编程语言在对待多核的问题上,必须内置对多核的支持而不是增加一些像API这样的特性就能搞定的”。
在Java早期的时候,我们哪里会知道Java编程模型会受如今汹涌澎湃的并发与多核编程影响。但随着JVM本身的不断进化,支持了很多语言,比如说Scala,可以做为并发编程的选择。如果提升应用程序的性能确实是个问题的话,那么也许Henrik Engström是对的,他主张I/O和内存管理会是真正的瓶颈,而不是你多加上几个处理器就可以解决的。他引用了Brian Goetz【注2】的文章《Java理论与实践:应用fork-join框架》,里面谈到了即将加入到Java7的java.uti.concurrent包里的新框架——fork-join:
“服务器应用程序通常会运行比可用的处理器数量多很多的并发线程或请求。这是因为在大多数服务器应用程序中,对请求的处理包含大量I/O,这些I/O不会占用太多的处理器(所有网络服务器应用程序都会处理许多的套接字I/O,因为请求是通过套接字接收的;也会处理大量磁盘(或数据库)I/O)。如果每个任务的90%的时间用来等待I/O完成,您将需要10倍于处理器数量的并发任务,才能充分利用所有的处理器。随着处理器数量增加,可能没有足够的并发请求保持所有处理器处于繁忙状态。但是,仍有可能使用并行性来改进另一种性能度量:用户等待获取响应的时间。”
这其实回避了问题的实质,我们想知道如何将所有新加入的处理器为我所用,做为多核革命?
而与此同时Daniel Lemire【注3】发表《计算机编程的多核革命还无法到来》对多核编程持否定态度。实际上他强调的是对大多数大型应用程序来说,最大的性能瓶颈实际上在数据层,而且,很多性能难题是可以通过框架(比如说MapReduce和Hadoop)和存储分区解决的。
总之,Java7勇敢的迈向由多核革命所引导的新的“并行”领域。同时,随着Microsoft和Intel在这方面的投资(最近两家公司宣布共投资2亿美元于并行计算.),你会发现汹涌的潮汐即将淹地平线(暗指多核革命的到来)。
【注1】
Henrik Engström从1997年开始一直从事专业软件开发,精通OOP,设计模式,Java SE/EE,应用服务器和SOA,精通各个n-层架构。对Jboss,Weblogic,Websphere服务器有非常深刻的理解。
【注2】
| Brian Goetz作为一名专业软件开发人员已经20年了。他是Sun Microsystems的高级工程师,并且效力于多个JCP专家组。Brian的著作Java Concurrency In Practice在2006年5月由Addison-Wesley出版。请参阅Brian在流行的业界出版物上已发表和即将发表的文章。 |
【注3】
加拿大的新不伦瑞克大学教授