Forum: PC-Programmierung Relevanz von Modellansatz, Algorithmus, Programmiersprache, Hardware zur Optimierung


von Markus (Gast)


Lesenswert?

Moin!

Ich hatte mal einen sehr aufschlussreichen Artikel gelesen, in dem es 
darum ging, welche Bedeutung die im Betreff genannten Kriterien für die 
effiziente Lösung einer Problemstellung haben. Leider erinnere ich mich 
nicht mehr, woher der Artikel stammte. Weiß rein zufällig jemand von 
euch, um welchen Artikel es sich handeln könnte oder kennt ihr eine 
ähnliche Darstellung?

Demnach kann z.B. der effizienteste Algorithmus in endlicher Zeit oft 
keine brauchbaren Ergebnisse liefern, wenn das Problem durch ein 
ungeeignetes Modell beschrieben wird. (Z.B. wäre es das falsche Modell, 
einen CPU-Emulator durch ein Spice-Modell aller Transistoren und 
sonstigen Analog-Komponenten zu beschreiben, da kann die Spice-Software 
noch so schnell sein.). Die nächstwichtige Frage, wenn das Modell 
feststeht, wurde als die Frage nach dem passenden Algorithmus 
identifiziert, bevor man überhaupt über die notwendige Hardware oder 
mögliche Optimierungen eine bestimmten Programmiersprache bis hin zu 
Assemblerprogrammierung nachdenkt. (Wieder ein Beispiel, Spice muss 
häufig Nullstellen beliebiger Funktionen suchen. Würde man einfache 
Bisektion anwenden, hätte man keine befriedigenden Laufzeiten, sondern 
man muss zwingend das Newtonverfahren einsetzen.) ... und so weiter. 
Fazit war, dass C-Gurus, die den letzten Taktzyklus aus einer einzelnen 
Funktion herauskitzeln, durchaus ihre Daseinsberechtigung haben, dass es 
aber am Anfang eines Projekts viel wichtiger ist, die sinnvollsten 
Modelle und Algorithmen zu suchen, da man sonst durch einfaches 
Austauschen des Modells mehrere Monate Arbeit der Quellcodeoptimierer 
überflüssig macht.

Also, kennt jemand einen Artikel oder ein Buchkapitel, wo das, was ich 
hier kurz umrissen habe, gründlich untermauert ist?

Danke
Markus

von Jay (Gast)


Lesenswert?

Das war nicht zufällig der Wikipedia-Artikel 
https://en.wikipedia.org/wiki/Program_optimization ?

Ansonsten, erfahrenen Entwicklern ist nicht unbekannt, dass die Wahl des 
Algorithmus normalerweise einen größeren Einfluss auf die Performance 
hat, als die Optimierung von Codezeilen.

von Noch einer (Gast)


Lesenswert?

Ist dir schon diese Einführung in die Komplexitätstheorie aufgefallen?
https://www.youtube.com/watch?v=DkE8R-4CKOQ

von Markus (Gast)


Lesenswert?

Jay schrieb:
> Das war nicht zufällig der Wikipedia-Artikel
> https://en.wikipedia.org/wiki/Program_optimization ?

Nein, der Inhalt ist schon ähnlich, doch mein gesuchter Artikel war noch 
anschaulicher, weil er das ganze am Beispiel einer bestimmten, komplexen 
Simulation erklärte (ich weiß nur nicht mehr, zu welchem genauen Thema).

> Ansonsten, erfahrenen Entwicklern ist nicht unbekannt, dass die Wahl des
> Algorithmus normalerweise einen größeren Einfluss auf die Performance
> hat, als die Optimierung von Codezeilen.

Das kann sein. Leider arbeitet man micht ausschließlich mit erfahrenen 
Entwicklern zusammen, und dann muss man Code-verliebten Hackern manchmal 
etwas nachhelfen, wenn Sie Monate Arbeitszeit in einen suboptimalen 
Algorithmus investieren wollen.

Der Wikipediaartikel ist schon hilfreich. Vielleicht finde ich ja noch 
anschaulicheres Material in der Richtung. Danke!
Markus

von Arc N. (arc)


Lesenswert?

So was kommt mir auch bekannt vor...
Könnte auf Stackoverflow verlinkt sein, auf 
http://lambda-the-ultimate.org/ oder im 
http://c2.com/cgi/wiki?WelcomeVisitors zu finden sein, ebensogut bei 
Joel Spolsky http://www.joelonsoftware.com oder auf 
https://blog.codinghorror.com/ oder in einem anderen Blog...

: Bearbeitet durch User
von Noch einer (Gast)


Lesenswert?

A geh. Solche Code-verliebten Hacker kann man einfach mit Scrum hinters 
Licht führen.

Du nimmst einfach 2 Gruppen. Die einen arbeiten Konzepte aus. Dazu 
gehört auch die Auswahl der Algorithmen. Den anderen legt die erste 
Gruppe dann kleine Stories zum eintippen auf den Tisch. Einfach die 
Zeitvorgaben so knapp setzen, dass die nicht an unsinnigen Details 
rumfeilen können.

Solchen Leuten kannst du erzählen, Stories eintippen sei 
Entwicklertätigkeit.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.