Hallo zusammen,
ich bin Java-Neuling und bin an ein Problem gestoßen, bei dessen Lösung ich Euch bitten wollte.
Ich habe anhand einiger Anleitungen, die ich unter anderem in diesem Forum gefunden habe (Danke!) folgendes Mini-Programm geschrieben und als Runnable-Jre exportiert.
Auf dem XP Rechner läuft der Counter ohne Probleme und regelmäßig.
Auf dem Vista-Notebook, fängt der Counter nach wenigen Sek. an zu hacken und der Ressourcen-Monitor zeigt eine sehr hohe Auslastung.
Ich habe schon mit den Begriffen "Vista, XP, Performance, SWT" gegoogled, aber leider nichts gefunden, was mit wirklich weiter geholfen hat.
Auf beiden Systemen habe ich die neueste Java-Version installiert.
Entwicklungsumgebung ist:
Eclipse SDK, Version: 3.5.1 mit dem Visual Editor
Der Dell-PC läuft mit XP, Intel Pentium 3GHz, 1GB RAM
Das ASUS-Notebook läuft unter VistaPremium, Athlon64 mit 4GB RAM.
Für eine Idee, Tipp oder einen Hinweis auf einen Fehler wäre ich sehr dankbar!
Dank und viele Grüße
Michael
ich bin Java-Neuling und bin an ein Problem gestoßen, bei dessen Lösung ich Euch bitten wollte.
Ich habe anhand einiger Anleitungen, die ich unter anderem in diesem Forum gefunden habe (Danke!) folgendes Mini-Programm geschrieben und als Runnable-Jre exportiert.
Auf dem XP Rechner läuft der Counter ohne Probleme und regelmäßig.
Auf dem Vista-Notebook, fängt der Counter nach wenigen Sek. an zu hacken und der Ressourcen-Monitor zeigt eine sehr hohe Auslastung.
Ich habe schon mit den Begriffen "Vista, XP, Performance, SWT" gegoogled, aber leider nichts gefunden, was mit wirklich weiter geholfen hat.
Auf beiden Systemen habe ich die neueste Java-Version installiert.
Code:
package ACPackages;
import java.text.DecimalFormat;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
public class PerformanceTest{
private Shell sShell = null; // @jve:decl-index=0:visual-constraint="47,13"
private myT sc = new myT(); // @jve:decl-index=0:
private Button btStart = null; // @jve:decl-index=0:visual-constraint="233,23"
private Composite composite = null;
private Label label = null;
/**
* This method initializes composite
*
*/
private void createComposite() {
GridData gridData = new GridData();
gridData.grabExcessHorizontalSpace = true;
gridData.horizontalAlignment = GridData.FILL;
composite = new Composite(sShell, SWT.NONE);
composite.setLayout(new FillLayout());
composite.setLayoutData(gridData);
label = new Label(composite, SWT.NONE);
label.setFont(new Font(Display.getDefault(), "Tahoma", 10, SWT.NORMAL));
label.setText("Label");
}
public static void main(String[] args) {
org.eclipse.swt.widgets.Display display = org.eclipse.swt.widgets.Display.getDefault();
PerformanceTest thisClass = new PerformanceTest();
thisClass.createSShell();
thisClass.sShell.open();
while (!thisClass.sShell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
public void createSShell() {
GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 2;
sShell = new Shell();
sShell.setLayout(gridLayout);
sShell.setSize(new Point(310, 95));
btStart = new Button(sShell, SWT.NONE);
btStart.setText("Starten");
createComposite();
btStart
.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
public void widgetSelected(
org.eclipse.swt.events.SelectionEvent e) {
Thread counterThread = new Thread(sc, "Clock");
counterThread.start();
}
});
sShell.addListener(SWT.Close, new Listener() {
public void handleEvent(Event event) {
System.exit(0);
}
});
}
class myT extends Thread
{
private volatile boolean running = true;
final DecimalFormat fmt = new DecimalFormat("00.000");
double elapsedSecs;
String zwischenzeit;
long startTime = System.currentTimeMillis();
public void run()
{
while (running)
{
sShell.getDisplay().asyncExec(new Runnable()
{
public void run()
{
if (label.isDisposed())
return;
elapsedSecs = (System.currentTimeMillis() - startTime) / 1000.0;
zwischenzeit = fmt.format(elapsedSecs);
label.setText(zwischenzeit);
try
{
Thread.sleep(100);
} catch (InterruptedException e)
{
e.printStackTrace();
}
}//run
});//runnable
}//while
} // run
}//class
}
Entwicklungsumgebung ist:
Eclipse SDK, Version: 3.5.1 mit dem Visual Editor
Der Dell-PC läuft mit XP, Intel Pentium 3GHz, 1GB RAM
Das ASUS-Notebook läuft unter VistaPremium, Athlon64 mit 4GB RAM.
Für eine Idee, Tipp oder einen Hinweis auf einen Fehler wäre ich sehr dankbar!
Dank und viele Grüße
Michael
Zuletzt bearbeitet: