Erhöhung der Programmgeschwindigkeit während der Programmlaufzeit

disconnectus

Aktives Mitglied
Hallo Zusammen,


Mein Programm hat maximale Ausführungszeitziele. Sie müssen gehalten werden, deswegen möchte ich beim Laufzeit die Ausführungszeit meines Programms messen. Falls es nicht schnell genug ist, möchte ich die Ausführungsgeschwindigkeit irgendwie erhöhen.

Ich kann die Ausführungszeit ohne Probleme messen. Das ist nicht schwer. Ich weiß aber nicht wie ich die Geschwindigkeit meines Programms während der Laufzeit erhöhen kann.

Könnten sie mir ein paar Ideen geben wie ich das machen kann?


Danke im Voraus
 

VfL_Freak

Top Contributor
Moin,
die Geschwindigkeit meines Programms während der Laufzeit erhöhen
Wie meinst Du das denn???

Es läuft immer mit der Geschwindigkeit, die quasi durch Deinen Code vorgegeben ist.
Das ließe sich allenfalls zur Compilezeit optimieren !!

Bremst Du es etwa selbst aus?
Oder redest Du von bspw. HW-Bremsen, die die CPU belasten/blockieren, Internet-Verbindungen etc. ??

Gruß Klaus
 

disconnectus

Aktives Mitglied
Ja. HW-Bremsen, die die CPU belasten/blockieren, sind ein gutes Beispiel. Was kann ich gegen diese Blockierungen machen?

Wie kann ich vom meinem Java-Code aus diese blockierende prozesse verhindern. Wenn mein Java-Programm in gegebene Zeit gegebene stellen im Code nicht erreichen kann, soll es z. B. die andere prozesse irgendwie blockieren. Kann man das machen?

Gibt es keine Andere lösungen? Kann mein Java-Programm nicht irgendwie die Prozessorgeschwindigkeit erhöhen?

Was meinst du mit "im Code quasi Geschwindigkeit vorgeben."?
 

tommysenf

Top Contributor
Gibt es keine Andere lösungen? Kann mein Java-Programm nicht irgendwie die Prozessorgeschwindigkeit erhöhen?

Über Java Hardware Extension könnest du dafür sorgen, dass deinem Rechner mehr Ressourcen zugewiesen werden:

Java:
Processor ps = new I86Processor(Processor.MAX_CYCLES);
java.lang.System.addResource(ps);

SCNR
 

Flown

Administrator
Mitarbeiter
Wie sollte ein Codeabschnitt/Algorithmus schneller zur Laufzeit gestaltet werden?
Wenn man soft/hard Zeitschranken hat, dann nimmt man auch Real-Time Java VMs. Ressourcen gibt es im Internet zu genüge.
 

InfectedBytes

Top Contributor
Kann mein Java-Programm nicht irgendwie die Prozessorgeschwindigkeit erhöhen?
Meinst du sowas:
Java:
Thread.getCurrentThread().getProcessor().setSpeed(20); // setze Geschwindigkeit auf 20Ghz
Falls ja, muss ich dich leider enttäuschen, so funktioniert die Welt leider nicht.
Dein Prozessor hat eben nur ne beschränkte Leistung, moderne Prozessoren wie die verschiedensten Intel i3/i5/i7 übertakten zwar automatisch, aber das kannst du nicht mal eben beeinflussen, zumal da eben unmengen an Faktoren hinzukommen.

Wie kann ich vom meinem Java-Code aus diese blockierende prozesse verhindern. Wenn mein Java-Programm in gegebene Zeit gegebene stellen im Code nicht erreichen kann, soll es z. B. die andere prozesse irgendwie blockieren. Kann man das machen?
Hier ist das Problem, das du nicht so einfach voraussagen kannst, ob dein Programm eine bestimmte Programmstelle zu einem bestimmten Zeitpunkt erreichen wird. Außerdem kommt noch erschwerend hinzu das solch eine Überprüfung ja selbst auch wieder ausgeführt werden müsste und somit Leistung fressen würde.

Das beste wäre vermutlich deinen bestehenden Code zu überarbeiten und schauen ob du nicht ggf Stellen verbessern kannst. Als kleine Verbesserung könntest du auch die Priorität deines Threads erhöhen, das könnte zumindest eine kleine Verbesserung bringen.
 

disconnectus

Aktives Mitglied
Den Code habe ich selbst nicht implementiert. Wir dürfen auch nicht sehr viele Änderungen im Code vornehmen. Meine Aufgebe ist nur die Ausführungszeit zu verringern ohne den Code umzustrukturieren.

Soweit ich verstehe kann man den folgende Lösungen versuchen:

1- Priorität der Threads erhöhen.
2- Mehr Ressourcen für meine Threads zuweisen
3- Prozessortakt erhöhen
4- Andere Prozesse Blockieren

Gibt es noch andere Lösungen?


Danke für die Hinweise für die erste 3 Punkte.
Weiß jemand vielleicht auch wie ich die andere Prozesse blockieren kann?
 

Flown

Administrator
Mitarbeiter
@disconnectus Das sind alles keine "Lösungen". Du hast in Realität keinen Einfluss wie die VM/OS die Threads zum Zug kommen lassen. Dabei helfen mehr Ressourcen und/oder Rechenleistung minimalst! oder gar nicht (Außer natürlich du upgradest von einem Pentium II auf einen Intel I7 - oder natürlich Server HW).

Was du benötigst ist eine andere OS-nahe Programmiersprache, die keine globige "VM" dazwischen hat. Oder wie ich dir in meinem letzten Post geschrieben habe nimmst du eine Real-Time Java VM.
 

Thallius

Top Contributor
@Flown

Solange wir nicht wissen worum es überhaupt geht kann man auch keine Tipps geben. Vielleicht ist es einfach nur grotten schlechter Code, der würde auch in einer Realtime Engine nicht besser werden.

Bei dem was einfache Desktop PC's heute zu leisten im Stande sind, brauchst Du schon eine verdammt hochkomplexe Anwendung um da an die Grenzen zu kommen. Und ehrlich gesagt glaube ich nicht, dass es hier um irgendwelche KI oder andere physikalische, mathematische Wunderwerke geht...
 

Meniskusschaden

Top Contributor
Die Aufgabenstellung wäre wirklich mal interessant, denn mir leuchtet der Sinn bisher überhaupt nicht ein. Es kann doch nicht Aufgabe einer Software sein, sich selbst möglichst viele Ressourcen zu verschaffen und andere dadurch womöglich auszubremsen. So etwas möchte ich nicht auf meinen Systemen haben. Dafür ist doch in erster Linie der Systemadministrator unter Nutzung der Tools des Betriebssystems zuständig. Es gibt doch eigentlich nur zwei Möglichkeiten: die Umgebung ist unterdimensioniert oder die Software ist ineffizient. Im ersten Fall ist der Administrator zuständig, im zweiten der Programmierer.
 

disconnectus

Aktives Mitglied
Das sind komplexe Modelle. Z. B. Eine Stadt ist sehr detailliert modelliert. So ein Modell kann man unter anderem für die Stadtplanung benutzen. Ich weiß auch nicht alles im Detail und ich denke, ich muss auch nicht unbedingt wissen.

Wir entwickeln diese Modelle nicht. Wir betreiben sie nur. Die Ausführungszeit dieser Modelle können aber je nach Einstellung mehrere Stünden dauern (bis 16 Stünden). Ich soll alles auf ein Testmodell, welche nur 20 Minuten dauert, testen.
 

Thallius

Top Contributor
Dann solltest du erstmal herausfinden was daran eigentlich so langsam ist. Ist es das Rechenprozess oder vielleicht doch eher die Datenbank dahinter? Solche komplexen Dinge sollten immer geclustered sein. Dann kann man problemlos auch beliebig viele Rechner an einem Modell rechnen lassen.
 

disconnectus

Aktives Mitglied
@mrBrown Die Aufgabenstellung ist die Ausführungszeit zu verkürzen ohne sehr viel im Code ändern zu müssen. Wir wollen dieses Performanzsteigerung auch auf verschiedene Modelle anwenden.
 

InfectedBytes

Top Contributor
@mrBrown Die Aufgabenstellung ist die Ausführungszeit zu verkürzen ohne sehr viel im Code ändern zu müssen. Wir wollen dieses Performanzsteigerung auch auf verschiedene Modelle anwenden.
Na also, es sind also doch Code Anpassungen erlaubt. Sie sollen sich zwar in Grenzen halten, sind aber möglich. Wenn du nun noch Infos zum Code gibst, kann man mal schauen was man da so Verbessern kann.
 

JStein52

Top Contributor
Auf welcher Art von Hardware läuft das Programm denn ? Und läuft es da alleine ? Wenn nein warum nicht ? Es könnte evtl. am billigsten und besten sein wenn du dir eine neue Hardware die 20% schneller ist hinstellst denn wenn ich dich richtig verstehe ist das Programm ja eher CPU-bound ??
 

Flown

Administrator
Mitarbeiter
Solange wir nicht wissen worum es überhaupt geht kann man auch keine Tipps geben. Vielleicht ist es einfach nur grotten schlechter Code, der würde auch in einer Realtime Engine nicht besser werden.
Ich lese Zeitschranken die eingehalten werden müssen, kenne dazu das Werkzeug, dann nenn ich es auch. Mehr war auch nicht dahinter.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Erhöhung Java Heap Space in Netbeans 6.5 - funktioniert nicht oder bringt nichts? Allgemeine Java-Themen 1
S Build-Zeitpunt (Datum und Uhrzeit) irgendwie während der Laufzeit zugänglich machen..? Allgemeine Java-Themen 4
B Liste ändern während Iteration über Diese? Allgemeine Java-Themen 16
D Boolean von ein anderem Java Programm während der Laufzeit ändern Allgemeine Java-Themen 23
N Generic Type einer Generischen Klasse während der Laufzeit bekommen Allgemeine Java-Themen 2
kodela Daten während Laufzeit zugriffsbereit Allgemeine Java-Themen 15
Neumi5694 Interpreter-Fehler final Eigenschaft während Laufzeit geändert Allgemeine Java-Themen 2
Neumi5694 Compiler-Fehler Konstanten entfernen während des Kompiliervorgangs Allgemeine Java-Themen 7
A Java Klasse auf Tomcat während der Laufzeit austauschen Allgemeine Java-Themen 1
T Während des Programmlaufs andere Programme ausführen Allgemeine Java-Themen 1
I NullPointer während while(){} Allgemeine Java-Themen 4
H ResourceBundle während Laufzeit bearbeiten Allgemeine Java-Themen 3
A ar während der Laufzeit überschreiben Allgemeine Java-Themen 20
M File einlesen während es beschrieben wird.. Allgemeine Java-Themen 6
X Update einer Jar während der Laufzeit Allgemeine Java-Themen 8
X Button während Thread aktiv ist disablen Allgemeine Java-Themen 11
D MouseClickEvent während MouseDraggedEvent Allgemeine Java-Themen 7
ruutaiokwu META-INF-daten bei ungepackten library-projekten während der entwicklung mit einbeziehen...? Allgemeine Java-Themen 2
J Progress Bar während Datenbank Erstellung Allgemeine Java-Themen 2
Sonecc Zugriff auf Class File einer anderen Jar während der Laufzeit Allgemeine Java-Themen 2
X Über ArrayList iterieren, während sich diese verändert Allgemeine Java-Themen 3
H Labels erstellen während Programm läuft Allgemeine Java-Themen 3
T Java - Compilieren während Laufzeit Allgemeine Java-Themen 3
P Speicherauslastung während Programm dokumentieren Allgemeine Java-Themen 3
R Drag und Drop - Fehler während Laufzeit Allgemeine Java-Themen 14
G Hibernate speichert Daten nur während Session in HSQL-DB Allgemeine Java-Themen 10
H Thread während Rechenoperation wirkt nicht Allgemeine Java-Themen 2
I Startbild anzeigen während JVM geladen wird Allgemeine Java-Themen 5
J ResourceBundle / properties-datei während der Laufzeit verän Allgemeine Java-Themen 6
M Suche , bereits während der eingabe ?? Allgemeine Java-Themen 4
M Formel in einem String während Laufzeit berechnen. Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben