Problem bei Programm, dass eine Datei mit bestimmter Größeerstellen soll !

  • Ersteller Ersteller Crymes
  • Erstellt am Erstellt am
AW: Problem bei Programm, dass eine Datei mit bestimmter Größeerstellen soll !

Um Performance solltest du dir die nächste Zeit erst mal keine Gedanken machen. So was macht man nur als wirklich erfahrener Programmierer an einem konkreten Problem, wenn einem auch klar ist, das man das Problem an sich im Halbschlaf runter schreiben kann. Vorher brauchst du gar nicht groß damit anfangen dir Gedanken über Performance zu machen, denn etwas performant zu machen ist WIRKLICH nicht so einfach und erfordert einiges an Erfahrung und Wissen.
Und selbst dann muss man immer wieder Knuth zitieren!
Premature optimization is the root of all evil
 
AW: Problem bei Programm, dass eine Datei mit bestimmter Größeerstellen soll !

Ja klar, aber er hat ja absolut keine Ahnung davon was er macht....

Sorry, da geht es erst mal darum, dass die Programme richtig laufen. Optimierung ist WIRKLICH nicht so trivial. Ich weiß das meine Programme funktionieren, die ich schreibe und mache mir daher auch Gedanken darüber wie ich etwas mache. Man sollte sich aber wirklich immer überlegen, wie viel Zeit einem eine geringe Optimierung wert ist...

Und du weißt ja 10% des Codes laufen 90% der Zeit. An den 10% rum zu schrauben macht Sinn, die restlichen 90% kann man eigentlich getrost vergessen, da es einfach nichts bringt, diese zu beschleunigen.

Und naja, wenn man Objektorientiert programmiert, muss man sich klar erst mal Gedanken zum Aufbau machen, wenn man sich aber an die Regeln hält, kann man einzelne Funktionen später leicht durch optimierte Varianten ersetzen. Die Königsdisziplin ist halt meiner Meinung nach, wenn man von Anfang an sich mit Datenformaten, Cachelines etc. etc. beschäftigt. Dafür benötigt man aber einfach einiges an Erfahrung!

Du musst ja um das sinnvoll zu machen mal so schnell 2-3 Lösungsansätze aus dem Ärmel schütteln, um die Sache miteinander vergleichen zu können etc.

Wenn es da schon an Sachen wie String=/=int hapert etc. dann sollte man wirklich sich erst mal darauf konzentrieren, dass das Programm läuft. Zumal das Programm ja winzig ist. Das kann man auch mal schnell neu aufsetzen.

Ich hoffe du verstehst was ich meine ;)

Und PS:

srand darf man schon mehrfach aufrufen. Der Pseudozufallszahlengenerator wird dann halt nur jedes mal neu initialisiert.

Man sollte aber jedes mal wenn man srand() verwendet, den ersten Wert den rand liefert verwerfen, da dieser recht abhängig vom Seedwert sein soll. Nur so btw.
 
AW: Problem bei Programm, dass eine Datei mit bestimmter Größeerstellen soll !

Und du weißt ja 10% des Codes laufen 90% der Zeit. An den 10% rum zu schrauben macht Sinn, die restlichen 90% kann man eigentlich getrost vergessen, da es einfach nichts bringt, diese zu beschleunigen.
Klar, deswegen gehe ich Grundsätzlich bei neuen Sachen erstmal hin und sehe zu das es läuft, meist in einen kleinen Demo. An diesen kann man dann schauen wo die Probleme sein können und die Erkenntnise lässt man dann in seinen Gedanken einflissen. Klar das ist nichts für jemanden der gerade anfängt. ;)

Die Königsdisziplin ist halt meiner Meinung nach, wenn man von Anfang an sich mit Datenformaten, Cachelines etc. etc. beschäftigt. Dafür benötigt man aber einfach einiges an Erfahrung!
Das ist auch für die meisten Programmier gar nicht notwendig. Ich möchte nicht wissen wieviel Programmierer dadraus noch nie was von Cachelines gehört haben. ;)

Du musst ja um das sinnvoll zu machen mal so schnell 2-3 Lösungsansätze aus dem Ärmel schütteln, um die Sache miteinander vergleichen zu können etc.
Ich denke hier ist weniger das Lösungsansätze haben als mehr das bewerten das Problem, aber ich stimme auch hier im Prinzip zu.
 
AW: Problem bei Programm, dass eine Datei mit bestimmter Größeerstellen soll !

srand darf man schon mehrfach aufrufen. Der Pseudozufallszahlengenerator wird dann halt nur jedes mal neu initialisiert.

Man sollte aber jedes mal wenn man srand() verwendet, den ersten Wert den rand liefert verwerfen, da dieser recht abhängig vom Seedwert sein soll. Nur so btw.
Hat bei mir nicht funktioniert, die Schleife wurde schneller aufgerufen, als sich time(NULL) änderte -> Mist :ugly:
 
AW: Problem bei Programm, dass eine Datei mit bestimmter Größeerstellen soll !

Das ist auch für die meisten Programmier gar nicht notwendig. Ich möchte nicht wissen wieviel Programmierer dadraus noch nie was von Cachelines gehört haben. ;)
Klar, aber die Sache kann SEHR entscheidend sein. Hab erst letzte Woche wieder vor Augen geführt bekommen, wie wichtig so etwas sein kann.

Hatten ein Singelthread Pogramm um Pi zu berechnen. Lief auch gut. Dann haben wir das auf den Server geschmissen und geschaut wie das Programm zwischen 1 und 46 Threads skaliert. Es kam dann raus das es gar nicht skaliert, sondern sogar langsamer wird.

Als wir gefragt wurden, woran das liegt (wir hatten den Quellcode nur ganz kurz gesehen) war erst mal GROSSES Schweigen angesagt :lol: Naja, wir sind dann nach ner Weile drauf gekommen, das wir immer schreiben, und uns damit die Cacheline versauen, weil wir keine lokalen Variablen hatten, und so alles innerhalb einer Cacheline gesessen ist :ugly:
Haben dann die Cacheline mit Dummydaten geüllt, so das jeder reale Wert in ner neuen Cacheline steht. TATA fast lineare Skalierung :D

Auf so etwas muss man aber erst mal kommen :ugly: Zumal man selbst rein intuitiv das Problem damit umgeht, das man halt lokale Variablen hat, die einem dann nicht ins Handwerk pfuschen.

Atm müssen wir ne n-Body-Simulation machen, da ist auch schwer überlegen angesagt, wie man die geschickt anordnet etc.

Ich denke hier ist weniger das Lösungsansätze haben als mehr das bewerten das Problem, aber ich stimme auch hier im Prinzip zu.

Ja da hast du natürlich recht. Das man die Lösungsansätze Quantifizieren kann war von mir einfach mal vorausgesetzt.
 
AW: Problem bei Programm, dass eine Datei mit bestimmter Größeerstellen soll !

Das Cacheline-Problem kenn ich von der Matrixmultiplikation :ugly:
Aber sowas ist wirklich stark Anwendungsabhängig. PHP Entwickler haben damit beispielsweise eher weniger am Hut :D
 
AW: Problem bei Programm, dass eine Datei mit bestimmter Größeerstellen soll !

Hat bei mir nicht funktioniert, die Schleife wurde schneller aufgerufen, als sich time(NULL) änderte -> Mist :ugly:
Das doch klar, dass das nicht funktioniert, wenn du das ständig aufrufst :ugly:

time(NULL) liefert die aktuelle Zeit ja nur im ms Bereich wieder... Die CPU ist da um einiges schneller. Daher kann sich da auch noch nichts geändert haben.

Es macht ja aber auch gar keinen Sinn das direkt nacheinander auf zu rufen.

Sinn macht es nur, wenn man X Zufallszahlen erzeugt hat, und dann ein neues Set an Zufallszahlen erzeugen will, die eben wieder unabhängig sind.

Bsp.: Unabhängige Geschwindigkeiten für die 3 Raumrichtungen.
 
AW: Problem bei Programm, dass eine Datei mit bestimmter Größeerstellen soll !

Das doch klar, dass das nicht funktioniert, wenn du das ständig aufrufst :ugly:

time(NULL) liefert die aktuelle Zeit ja nur im ms Bereich wieder... Die CPU ist da um einiges schneller. Daher kann sich da auch noch nichts geändert haben.

Es macht ja aber auch gar keinen Sinn das direkt nacheinander auf zu rufen.

Sinn macht es nur, wenn man X Zufallszahlen erzeugt hat, und dann ein neues Set an Zufallszahlen erzeugen will, die eben wieder unabhängig sind.

Bsp.: Unabhängige Geschwindigkeiten für die 3 Raumrichtungen.
Deswegen abe ich ja gesagt, er soll es nur einmal aufrufen. Ich war mir der Problematik schon vorher bewusst ;)
 
AW: Problem bei Programm, dass eine Datei mit bestimmter Größeerstellen soll !

Das Cacheline-Problem kenn ich von der Matrixmultiplikation :ugly:
Aber sowas ist wirklich stark Anwendungsabhängig. PHP Entwickler haben damit beispielsweise eher weniger am Hut :D

Das auch klar :D

Ich würde jeden PHP Programmierer erschlagen, der sich über so etwas Gedanken macht :lol: Das ist absolut vorbei an der Zielsetzung.

Ich programmiere halt C/C++ und OpenCL, und da halt immer mit der Zielsetzung, dass das Programm möglichst schnell läuft.

Man sollte gar nicht denken, wie oft man noch nen Faktor 2 raus holen kann aus nem Programm.

Hatte erst gestern mein Programm nochmal angeschaut und endlich ein paar inline rein geschmissen. TATA Das Programm hat statt 38 nur noch 17 Sekunden gebraucht :D
 
AW: Problem bei Programm, dass eine Datei mit bestimmter Größeerstellen soll !

Ist auf jeden Fall immer wieder erstaunlich. Aber ich stimme dir zu, man muss das Programm erst mal ans Laufen bekommen, danach kann man immer noch optimieren.
 
AW: Problem bei Programm, dass eine Datei mit bestimmter Größeerstellen soll !

Ich befürchte wir machen gerade den ganzen Thread kaput. :ugly:

Allerdings bin ich ehrlich gesagt überascht das sich hier soviel Leute antreffen lassen, die wirklich Programmieren. :daumen:

Edit:
Hatte erst gestern mein Programm nochmal angeschaut und endlich ein paar inline rein geschmissen. TATA Das Programm hat statt 38 nur noch 17 Sekunden gebraucht :D
Ich hab mir für LinAlg damals mal ein Programm geschrieben und es wärend der ganzen Zeit an der Uni immer weiter Optimiert. Das war zum Schluß fast 10 mal schneller als die erste Version. :daumen:
 
AW: Problem bei Programm, dass eine Datei mit bestimmter Größeerstellen soll !

Das freut mich zu hören. ;) Nur solltest du einige Sachen direkt aus deinen Gedanken verbannen, denn so kommst du nie zum Ziel.

Wir haben an der Uni damals immer ein kleines Spielchen gemacht. Einer gibt ein Problem vor und die anderen stellen darauf ihre Lösungen vor, mit begründung warum sie sich dafür entschieden haben. Wäre vielleicht auch was für hier. Macht wirklich viel Spaß und man lernt eine Menge von den Gedankengängen der anderen.
 
Man könnte ja mal einen Thread erstellen, ich hätte Lust drauf...
 
Zuletzt bearbeitet:
Zurück