2009-09-09 82 views
2

我在Netbeans 6.7.1中製作BraidJava:Netbeans調試會話比正常運行速度更快

電腦規格:

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

+0

Braid是用Java編寫的嗎? 整潔:),不會有猜測。 – 2009-09-16 15:36:25

+0

@Oryryad:不,它不是。當時我正在寫一個克隆來學習一些遊戲開發。 – 2016-04-12 14:14:56

+1

從過去的爆炸,回覆評論從2009年:) – 2016-04-13 22:09:46

回答

2

你使用哪種框架?或者你自己寫了一個?在後一種情況下,您是使用System.currentTimeMillis()還是System.nanoTime()來限制FPS?

Debugmode可能會更改Windows下的操作系統中斷速率的分辨率,因此也會更改System.currentTimeMillis()的分辨率。

我有一個類似的情況,在使用VisualVM時,我的遊戲的運行速度更快。使用System.nanoTime()而不是System.currentTimeMillis()來計算Thread.sleep()的值可以修復它。

你可以閱讀更多關於這個話題在這裏: http://blogs.oracle.com/dholmes/entry/inside_the_hotspot_vm_clocks

+0

這是intresting,謝謝。但是我添加了一些關於cpu的信息。 我使用兩個線程:1更新,1 repainter – 2009-09-12 19:14:12

+0

現在,當我用Java製作遊戲時,我總是使用你的Bonsai Lib。我非常喜歡。 – 2010-06-13 17:00:19

1

repaint()方法是便宜的,因爲多個請求被處理之前合併。我會猜測在調試器下更多的重繪正在合併爲paint()的實際調用。

請儘量保持每次致電paint()paintComponent()時更新的計數器。如果我是對的,在調試器下運行時應該會看到更少的調用。