Java:Netbeans调试会话比正常运行速度更快

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

为了好玩和学习,我正在用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 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年的评论:)