作者Coyote (新生活即将开始)
看板CSSE
标题Re: [问题] 随便Java写的程式在core duo一定比单核 …
时间Sat Jul 7 00:29:13 2007
※ 引述《byshen (sby)》之铭言:
: ※ 引述《RichieRich (Richie)》之铭言:
: : 早上跟老板说程式要最佳化才会比较快
: : 老板说java不管如何写 jvm本身就会最佳化
: : 请问java jvm真得可以把单线程的程式在双cpu下跑得比单cpu快?
: 是有可能会比较快,有不少 paper 有在研究 multi-core 环境下的 JVM,
: 例如在没用到的 core 执行一个 helper thread 去做 data prefetching
: 来降低 cache miss rate,
: 或者想办法把一个 loop 拆成好几个 threads 去执行,
: 例如一个 for i = 1 to N 的 loop,可以变成 N 个 threads 这样。
: (这中间当然会有一些问题需要解决,方法也有很多种,有兴趣可以去看相关的 paper)
: 不过实际上还是要看你所使用的 JVM 有没有做这些 optimization @_@
这个问题基本上跟java这个程式语言没啥关系
跟compiler和vm比较有关 他们的实作可以有很大的影响
C程式其实也可以做类似的最佳化
你可以去看openMP 这提供一些hint可以加在c的程式里 帮助compiler做多cpu的最佳化
(印象中gcc和intel's compiler都有支援)
但是这要人去加hint 所以不算全自动
如果程式是跑在vm上 还有一个优势是可以做dynamic profiling
可以做最佳化作的更彻底 可以比单靠compiler去做还要好
这也是新版的java vm performance越来越好的其中一个原因
google JIT 会有很多资讯
但是这也不是java独有的优势 只要是有vm的都可以做
.net perl python ruby php ... 都可以去做
如果这种自动的多cpu最佳化 想要跟语言扯在一起
比较有优势的应该是functional lang.
因为他们没有side effect的特性 要自动做多cpu的最佳化会简单许多
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.42.162