简单的Java程序在Windows 2008 Server上运行缓慢
这个问题在这里已经有了答案:
我会看看处理器的差异。 服务器系统大部分时间都是为写入磁盘而不是计算而优化的。 单看处理器的速度,根据这些信息,它们完全不同于3.4 GHz和1.6 GHz,我只能说3.4应该比1.6 GHz快得多。
为了确保在两个系统上找到一些基准信息。
当然,由于服务器处理器速度要慢得多,对我来说,这似乎是非常好的结果,根据我的计算(对于此测试),XEON 1.6 Ghz处理器的计算效率(每Ghz)为61%。 但是,i7还可以根据需求(Turbo Bost)将频率从3.4提高到3.8 Ghz,因此这可能会影响您的测试。 尝试安装另一个Java VM并重复该测试。 如果你之后不确定,可以尝试在linux上运行(使用java运行一个活的linux映像或其他东西)。 有很多因素可以促成结果,内存速度是另一个因素。 你也可以比较处理器的GFLOPS值,这可以给你一个关于效率的暗示,但正如在你的问题下面的一些评论中所述,微量基准对于测量某些东西并不是很有用。
当您测试通常不会写的次优代码时,您正在测试该处理器的某些特定行为。 一个处理器设计可能会比另一个处理器执行一个操作的速度慢得多,但在真实程序中平衡的情况并不会出现。
最简单的解决方案是尝试优化代码,并且您可能会发现它在两台机器上都快得多。
double sum = 0;
for (int a=1; a < 1000000; a++) {
int input = 100;
for(int counter = 1; counter < input; counter += 2){
sum += 1.0 / (2 * counter - 1) - 1 / (2 * counter + 1);
// or
// sum += 2.0 / ((2 * counter - 1) * (2 * counter + 1));
}
}
注意:Math.pow是一项非常昂贵的操作。
链接地址: http://www.djcxy.com/p/86551.html