作者leicheong (睡魔)
看板CSSE
标题Re: [问题] 随便Java写的程式在core duo一定比单核 …
时间Sat Jul 7 09:20:55 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 这样。
这个不可以啊...
例如:
String temp = "";
for (i=1;i<=N;i++)
{
temp += "*";
System.out.println(temp);
}
这个分拆在不同CPU跑的话结果就可能不一样了. 可是要跨CPU做state sync.
的话, 那不是跑得更慢吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 202.134.126.84
※ 编辑: leicheong 来自: 202.134.126.84 (07/07 09:21)
1F:→ byshen:这种 case 当然不需要阿,不是每种情况都适合拆开 loop 的 07/07 09:40
2F:推 byshen:就算适合也需要看你所说的sync的overhead是否小於能获得的 07/07 09:45
3F:→ byshen:benefit,当然是在觉得有好处的情况下才会做这些事 @_@ 07/07 09:45
4F:→ byshen:我前面只是举例一些我看过的optimization方式而已。 07/07 09:51
5F:→ byshen:细节部份有兴趣可以去找相关的paper研究。 07/07 09:55
6F:推 rexrainbow:loop间有资料相依性 07/07 10:42
7F:→ Coyote:这就是compile时下opt参数会跑很久的原因 07/07 12:44
8F:→ Coyote:他要去了解能不能做opt 这不是件容易的事啊 07/07 12:46