我正在开发这个呈现分形的免费开源应用程序。 http://perceptron.sourceforge.net/
在我的Windows上,此时应用程序比Linux慢2到3倍,可能是因为最近更新了Ati Radeon驱动程序(在Linux中使用相同的版本)。当应用程序执行时,CPU频率不会自动上升(它保持在1.4 GHz),而Linux则不会立即升至3.4GHz。
(它使用64位Java并且仅在Linux中运行速度很快。使用32位版本,由于某种原因,永远无法获得快速执行。由于32/64位版本而导致的性能问题考虑到32/64位版本下慢速/快速速度的1:3比例相同,也可能与CPU频率有关。这表明这两个版本在最低或更高频率下使用CPU。研究细节将会在项目页面论坛。)
我想知道如何执行这个JFrame应用程序,该应用程序不断写入屏幕并确保跨系统的快速操作,适用于所有未来用户,即如何充分利用Java使用CPU。
主类以下列方式调用Perceptron,CPU优先级对速度完全没有影响。
try {
final Perceptron m = new Perceptron("resource/Settings.txt", "resource/CrashReport.txt", "resource/presets");
Thread go = new Thread() {
@Override
public void run() {
m.go();
}
};
go.setPriority(Thread.MAX_PRIORITY);
go.start();
} catch (Exception e) {
e.printStackTrace();
}
答案 0 :(得分:0)
我通过在我的华硕主板BIOS中设置高级CPU选项,CPU核心级别=每核心一个计算单元,在Windows中实现了非常好的速度。此选项与AMD A10 APU(内置GPU的CPU)相关。性能非常好,如果我打开另一个应用程序并在其中工作,频率会迅速缩小。
然而,有必要知道如何以编程方式操作CPU / GPU,即用Java编写代码或用于保持CPU利用率的“启动”应用程序的C代码,因为它可以帮助其他用户遇到类似的情况。此外,几天前我使用Ultra Fractal来“加热”CPU并且我的应用程序同时快速运行,因此“启动”应用程序可以做到这一点,尽管它似乎是一种解决方法。
我新发现的解决方案有点不完美。频率周期性地振荡,每隔20秒就会上下移动一点点。此外,电脑性能特别!让我们看一下比较......
3DMARK 版本:1.1 SystemInfo版本:4.22.0.0 2013年11月30日
配置
AMD P10-5700 AMD Radeon HD 7660D ASUSTeK COMPUTER INC.F2A85-M LE 64位Windows 8(6.2.9200)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
自动核心调整
ICE STORM
3DMark得分 42261.0 3DMarks 图形分数 46575.0 物理分数 31916.0 图形测试1 180.9 fps 图形测试2 229.9 fps 物理测试 101.3 fps
云门
3DMark得分 5595.0 3DMarks 图形分数 7987.0 物理分数 2732.0 图形测试1 34.2 fps 图形测试2 35.2 fps 物理测试 8.67 fps
消防罢工
3DMark得分 1049.0 3DMarks 图形分数 1159.0 物理分数 3734.0 综合得分 377.0 图形测试1 5.44 fps 图形测试2 4.7 fps 物理测试 11.9 fps 综合测试 1.76 fps
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
每个核心一个计算单元......或者每个计算单元一个核心....?没关系。
ICE STORM
3DMark得分 43003.0 3DMarks 图形分数 67942.0 物理分数 18822.0 图形测试1 294.8 fps 图形测试2 296.0 fps 物理测试 59.8 fps
云门
3DMark得分 4406.0 3DMarks 图形分数 8052.0 物理分数 1705.0 图形测试1 33.8 fps 图形测试2 36.3 fps 物理测试 5.42 fps
消防罢工
3DMark得分 1042.0 3DMarks 图形分数 1168.0 物理分数 2356.0 综合得分 395.0 图形测试1 5.42 fps 图形测试2 4.78 fps 物理测试 7.48 fps 综合测试 1.84 fps
答案 1 :(得分:0)
使用BIOS中的默认设置,Windows下执行速度慢的问题归结为Windows中的CPU电源管理。 Java应用程序不会使CPU切换到更高的频率。这种行为的中心是Ati Radeon显卡的当前Catalyst管理器。在Catalyst中,可以将频率固定在最高频率,这可以解决问题,但不是默认设置。此外,在“控制面板”的“电源计划”中,高级设置还包含最低和最高CPU频率。默认设置为最宽范围,但将它们设置为最高值可以解决Java的问题。这个设置对我来说似乎不自然。一个有利的解决方案是根据需要从程序内控制CPU调控器,如果它已经没有对系统本身的需求做出反应的话。但是,它确实对许多C / C ++程序和标准测试做出了反应。
答案 2 :(得分:0)
经过数月的等待,最新版本的Ati Radeon DRIVER FOR WINDOWS允许CPU在加载Java应用程序后将频率提高到最大值。这是最低频率的约3倍,这加速了应用。 Ati Radeon驱动程序影响CPU的原因可能是因为我有一个组合的CPU / GPU单元AMD A10 5700,所以该单元被控制为CPU或GPU。华硕AI Suite II已设置为EPU:高性能模式,而Windows电源选项大多数是默认值。如您所见,有3个地方试图配置相同的东西,即电源选项。 Ati Radeon驱动程序通过自己的预设控制这些选项,这些选项会影响基线和升级的CPU频率。前几个月中所有可能的选项组合在Windows中都失败了。然而,Linux并未受到这些问题的影响。
这些观念引起了广泛的不相信,所以我正在添加一些照片来展示我正在讨论的选项...
在这里,您可以看到当我的Java应用程序使用新的Ati驱动程序运行时它如何扩展。
但是,解决这个问题的道路并不简单。安装新驱动程序后,没有新的事情发生。我在Radeon控制中心选择了游戏预设,并始终在其最高可能点设置固定的频率值。我知道Ati制作了一个新功能,但我想让频率调整工作,所以我重新选择了Asus AI Suite II和Windows控制面板中的默认电源选项,结果就出现了。