Java:Netbeans调试会话比正常运行速度更快
为了好玩和学习,我正在用Netbeans 6.7.1用Java制作游戏的克隆 计算机规格:Java:Netbeans调试会话比正常运行速度更快,java,debugging,netbeans,Java,Debugging,Netbeans,为了好玩和学习,我正在用Netbeans 6.7.1用Java制作游戏的克隆 计算机规格: Windows 7 Running processes: 46 Running threads: +/- 650 NVidia GeForce 9200M GS Intel Core 2 Duo CPU P8400 @ 2.26Ghz 正常运行的游戏规格: Memory: between 80 MB and 110 MB CPU: between 9% and 20% CPU when time re
Windows 7
Running processes: 46
Running threads: +/- 650
NVidia GeForce 9200M GS
Intel Core 2 Duo CPU P8400 @ 2.26Ghz
正常运行的游戏规格:
Memory: between 80 MB and 110 MB
CPU: between 9% and 20%
CPU when time rewinding: 90%
调试会话的值相同,但倒带时间时除外:CPU:20%。
有什么理由吗?是否有办法在正常运行时达到相同的性能
这是我的重绘代码:
@Override
public void repaint()
{
BufferStrategy bs = getBufferStrategy(); // numBuffers: 4
Graphics g = bs.getDrawGraphics();
g.setColor(Color.BLACK);
g.fillRect(-1, -1, 2000, 2000);
gamePanel.paint(g.create(x, y, gameDim.width, gameDim.height));
bs.show();
g.dispose();
Toolkit.getDefaultToolkit().sync();
update(g);
}
游戏全屏运行(未装饰+frame.size=屏幕大小)
Martijn您使用哪种框架?还是你自己写的?在后一种情况下,您是使用System.currentTimeMillis()还是System.nanoTime()来限制FPS Debugmode可能会更改Windows下操作系统中断速率的分辨率,因此也会更改System.currentTimeMillis()的分辨率 我有一个类似的例子,当使用VisualVM时,我的游戏确实运行得更快。使用System.nanoTime()而不是System.currentTimeMillis()来计算Thread.sleep()的值修复了此问题 您可以在此处阅读有关此主题的更多信息: 由于在处理多个请求之前会合并多个请求,因此
repaint()方法成本较低。我猜在调试器下,更多的重绘被合并到对paint()
的实际调用中
尝试保留每次调用paint()
或paintComponent()
时更新的计数器。如果我是对的,在调试器下运行时,您应该会看到更少的调用。这很有趣,谢谢。但是我添加了一些关于cpu的信息。我使用两个线程:1个更新程序,1个repainterNow,当我用Java制作游戏时,我总是使用你的盆景库。我非常喜欢。Braid是用Java写的吗?整洁:),不会猜到的。@OmryYadan:不,不是。我当时正在写一个克隆人来学习一些游戏开发。从过去开始,回复2009年的评论:)