gpt4 book ai didi

Java 在带有 OSX 的 MacBook 上的性能很糟糕,在同一台设备上的 Windows 下表现更差,为什么?

转载 作者:行者123 更新时间:2023-11-30 11:37:54 27 4
gpt4 key购买 nike

我正在学习 Java 并开始我的第一课/项目。在这个项目中,导师的像素在屏幕上移动并稳定剪辑,并在几秒钟内完成它在屏幕上的旅程。我的需要几分钟,每 5 秒只移动 1 个像素。我原以为 MacBook Pro 可以更好地处理 Java 图形。为了查看它是我的代码还是单元,我在 Windows 中启动时从头开始重建项目,性能明显提高。在那里,光标每秒移动 1-2 个像素;仍然不如讲师,但比 OSX 处理得更好。我想知道这是正常的还是预期的? OSX 是否只是在处理 Java 图形方面表现不佳?如果它有助于回答这个问题,我已经链接了我的代码,以及 OSX 中缓慢移动的像素和糟糕的帧速率的视频。 Fraps 显示我在 Windows 中获得平均 650 fps,OSX 端的代码输出显示它大约在 40-60 左右,具体取决于我是否有其他视频进程在进行。在视频中它大约是 45 帧,但那是因为屏幕截图将它从平均 60 帧/秒减慢了。

OSX 中的帧率示例:https://www.youtube.com/watch?v=PQ0-L4slgP4

屏幕类代码:http://pastebin.com/3ETKsY8r

游戏类代码:http://pastebin.com/NDreVB60

我在 Apple 端使用 10.7.5 下的 Eclipse Juno,在 Bootcamp 端使用 Windows 7。 MacBook 配备 4GB 内存和 2.53 Ghz Intel Core 2 Duo。

最佳答案

我在我的 MacBookPro 上运行了您的代码示例,结果比您发布的视频中的要好得多。

现在,我不是 Java 2D 图形方面的 super 专家,但观察到,由于您需要在每次迭代中一遍又一遍地重绘整个 Canvas ,以便像素移动,因此渲染过程中涉及的逻辑应该很快。此外,由于像素沿对角线移动,右侧较大的区域对您的示例没有用,因此我建议将 JFrame 设为正方形,这样可以减少重新绘制的区域。

最后,我对 Screen 类的代码做了一些更改,可以让您更快地完成操作。

package com.oblivion.rain.graphics;

public class Screen {
// Height was removed since there is no use for it
private int width;
public int[] pixels;

int time = 0;
int counter = 0;

// We need this in order to avoid the iteration in the clear method.
int previousPixel = 0;

public Screen(int width, int height) {
this.width = width;
pixels = new int[width * height]; // 50,400
}

public void clear() {
// In case the frame is a rectangle, the previousPixel
// could hold a value that is greater than the array size
// resulting in ArrayOutOfBoundsException
if (previousPixel < pixels.length) {
pixels[previousPixel] = 0;
}
}

public void render() {
counter++;

if (counter % 100 == 0) {
time++;
}

// Calculate the previousPixel index for use in the clear method
previousPixel = time + (time * width);


// Make sure we didn't exceed the array length, then set the
// array data at the calculated index
if (previousPixel < pixels.length) {
pixels[previousPixel] = 0xff00ff;
}
}
}

关于Java 在带有 OSX 的 MacBook 上的性能很糟糕,在同一台设备上的 Windows 下表现更差,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13865171/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com