Problème de performance avec une animation sous linux
Bonjour
J'ai un probleme de perfomance lors d'une animation sous linux.
Cette animation est parfaitement fluide sous windows mais tres saccader sous mandrake 10.0.
J'ai installer les driver de ma carte video (Geforce 2 mx) mais le resultat est le meme.
Cependant j'ai remarquer que l'animation etait fluide lorsque que bouge ma souris a l'interieur de la fenetre ou se passe l'animation.
Qqun pourrais m'eclairais pour ce probleme?
dois je conclure que sun defavorise linux? que linux est une merde question performance(mince moi qui commencais a apprecier cet os)? que j'ai un probleme de confiiguration? que mon animation est mal programmer?
Ce message etait precedement sur le forum java mais je n'ai pas trouver bcp d'aide.
PS : java 1.4.2_05,mandrake 10.0, CPU 1GHZ 512 Mo de ram.
Mon animation java (c juste un essai ne chercher pas la belle programmation et un code optimiser :oops:. ya meme des variables qui servent a rien):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
/*
* Created on 9 juil. 2004
*
* */
package essai;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.geom.AffineTransform;
import javax.swing.JFrame;
/**
* @author joffrey
*
*
*/
public class Essai extends JFrame implements Runnable {
private Graphics2D buffer;
private Image image;
private AffineTransform trans;
private int x,y,top;
private Thread t;
private Rectangle r;
public Essai()
{
top=x=y=0;
t = new Thread(this);
r = new Rectangle(10,10,50,50);
setSize(400,400);
setVisible(true);
t.start();
}
public void paint(Graphics g)
{
if(image == null)
{
image = createImage(getWidth(),getHeight());
buffer = (Graphics2D)image.getGraphics();
}
Graphics2D g2d = (Graphics2D)g;
trans = new AffineTransform();
trans.translate(x,y);
buffer.setTransform(trans);
buffer.drawRect(10,10,50,50);
g2d.drawImage(image,0,0,400,400,this);
x+=1;
y+=1;
}
public void run()
{
long tm = System.currentTimeMillis();
while(true)
{
repaint();
try{
tm+=30;
t.sleep(Math.max(0,tm-System.currentTimeMillis()));
}catch(Exception ex){}
}
}
public static void main(String[] args)
{
Essai e = new Essai();
} |