Leistung steigern

Bigbutcher

Erfahrenes Mitglied
Moin Leute!

Ich hab da mal eine generelle Frage zum guten und performanten Programmieren.

Ich hab' letztens ein sehr großes Programm geschrieben, das jedoch sehr viel CPU Zeit kostet.

Jetzt wollte ich euch fragen, was es denn grundsätzlich für Strukturen gibt die man vermeiden/verwenden sollte, damit man ein schnelles Programm erhält.

MfG

BB
 
moin


Erzähl mal was über dein Programm.
Benutzt es Threads?
Läuft es in einer Schleife?
So was.

Wie groß ist denn das Programm/Quellcode?
Könntest ihn ja mal gezippt als Anhang anhängen.


mfg
umbrasaxum
 
Naja also ein Allgemeinrezept gibt es da natürlich nicht. Wobei man schon auf ein paar Dinge achten kann:
- Wenige Kopien verwenden, stattdessen Referenzen oder Zeiger
- Speicher dynamisch reservieren (geeignete Vectoren, Collections verwenden)
- Speicher so bald als Möglich wieder freigeben.
- Pointerarithmetik verwenden
- Optimierung durch Compiler
- Performantere Compiler (z.B. den von Intel) verwenden

So das sollen nur mal ein paar Faktoren sein, natürlich gibt es da noch genügend andere, gerade im mathematischen Bereich oder im Grafischen Bereich.

Man sollte auch versuchen weit verbreitete, bewährte Algorithmen zu verwenden, z.B. bei Sortierung, Grafikbearbeitung, 3D-Programmierung.

Du kannst auch mit Profilingprogrammen, die Flaschenhälse deiner Anwendung herausfinden und dort an Optimierung ansetzen.

Also wie du siehst gibt es da viele Lösungsansätze.

Gruß Daniel
 
moin


Ich hatte auch mal ein Tutorial zur Codeoptimierung gelesen, weiss aber nciht mehr wo.
Aber es gibt sowas und es sollte sich auch per google finden lassen.


mfg
umbrasaxum
 
Was auch sehr viel bringen kann sind sachen wie:
- Lazy Evaluation ( verzögerte Berechnung)
- Lazy Fetching ( verzögertes Holen von Werten)
- Lazy Expression Evaluation ( Verzögerte Auswertung von Ausdrücken)
Und im allgemeinen alles was mit lazy zu tun hat ;)
Grundvorraussetzung dafür ist nat der sinnvolle, und brauchbare Einsatz
dieser techniken.
siehe dazu:
http://en.wikipedia.org/wiki/Lazy_Evaluation


Gruß

RedWing
 
Nabend beisammen,

das Programm direkt werd ich leider nicht mit anhängen können, aber ich kann euch etwas darüber erzählen.

Also in der Main Methode werden 2 Threads geöffnet und in einem dieser Threads wird wiederum ein Thread gestartet.
Die Aufgabe der Threads ist es Bilddaten binär zu empfangen/senden und Benutzereingaben zu empfangen
2 dieser Threads kommunizieren miteinander indem eine Art Verbindungsklasse geschrieben wurde.
Beide Objekte haben nicht gleichzeitig Zugriff, sondern nur dann wenn der eine Thread mit seiner Aufgabe fertig ist.

Leider kann ich euch keine genaueren Angaben machen.

Wie dem auch sei, eigendlich war meine Frage von allgemeiner Natur, wollte also quasi wissen, was man generell vermeiden sollte.
Also soetwas wie:

while (true)
{
// Do nothing
}

MfG

BB
 
Zurück