Autor Thema: Wieviele Takte benötigt ein Befehl?  (Gelesen 24024 mal)

DDR-RAM

  • Beiträge: 184
    • Profil anzeigen
Gespeichert
« Antwort #40 am: 31. May 2005, 16:11 »
Zitat von: Svenska
Zitat
[...]
Ein möglicher Algorithmus wäre, das Ergebnis vorherberechnen, wie es sein soll und auf dessen basis, einen effektiveren Algo vorzuschlagen, falls er einen kennt.
Falls er einen kennt. Dat ersetzt aber den Menschen, der ihn sich ausdachte nicht...

Wenn der Compiler einen auswählt, den er kennt, dann hast du recht, ja,
wenn er aber z.B. einen genetischen Algorithmus arbeitet, der einen Algorithmus verändert, dann muss der Coder des Compilers _nur_ diesen bauen, der Rest ergibt sich sozusagen von selbst.
(mir ist klar, das genetische Algorithmen im allgemeinen recht langsam zum Ziel kommen, aber die PC's werden auch schneller)
Und wie gesagt, das ist auch nicht Aufgabe des Compilers.
Zitat
Zitat
Ein in C gebautes quicksort, wird (mit gleichen gimmicks) einem relativ gut gecodetem asm-quicksort in nichts nachstehen. (ok, bei asm kann man direkt den stack benutzten und muss sich nicht selber einen bauen)
Wie war das mit dem beschränkt? :)
:D
Zitat
Zitat
allerdings sollte bis dahin die Menschheit ihre inneren Konflikte lösen, sonst gehts zurück in die Steinzeit.
Soweit waren wir schonmal mit dem kalten Krieg. Ich glaube nicht, dass die Menschheit jemals ihre innersten Probleme lösen wird, leider.
Ist mir auch relativ egal, solange es mich nicht betrifft.
immer dieser Egoismus.  :shock:
Zitat
Aber eine Hochsprache hat _immer_ Nachteile gegenueber der reinen Prozessorsprache, was gewisse Sachen angeht. Perfekte Optimierung und 100%ige Flaschenhalsentfernung ist mit einer Hochsprache - besonders im Lowlevelbereich - nicht möglich.
Die Nachteile, sind doch nicht zwanghaft, sie sind vorhanden, bei wahrscheinlich allen aktuellen Compilern.
Alles was zum Programmablauf zu wissen ist, steht im Quellcode.
Ein gut "ausgebildeter" asm-coder könnte diesen maximal optimiert übersetzten. Diese maximale Optimierung, geschieht doch aber nicht irgendwie wirr, sondern nachvollziehbar, ja wahrscheinlich sogar nach einem bestimmten Schema/Algorithmus und das ist genau das, was ein Computer sehr gut kann. Das es recht gut geht, sieht man an den heutigen Compilern. Das es aber noch besser ginge, sieht man daran, das an einigen stellen, handoptimierung sinnvoll wird.
Zitat
Optimierung bis zum äussersten geht nur mit Assembler

In asm kann man als einiziges für einen speziellen Prozessor hinoptimieren, ja. Algorithmen kann man aber auch in allen anderen Sprachen optimieren. (ja, das meintest du wahrscheinlich nicht ;-) ).
Bei Hochsprachen optimiert der Compiler, bei asm ist einem das selber überlassen (ja, wieder sind die algorithmen nicht gemeint).

Das, was uns wahrscheinlich trennt, ist, dass ich glaube das Compiler (vielleicht in 20 Jahren, vielleicht eher) maximale Optimierung erreichen können.

Zitat von: Legend
Boah leute, die 20-30% die ne gute(!) ASM Implementierung wohl gegenüber ner guten(!) Hochsprachenimplementation bringen wird

Die Zahl ist aber reichlich aus der Luft gegriffen, 20-30% schneller ist Handoptimierter Code wahrscheinlich nicht, kleiner erst recht nicht.
Ich würde maximal von 10%, im Durchschnitt aber _deutlich_ unter 5%.
Zitat
(ausser wohl im Bereich von SIMD, da die Compiler wohl noch nicht so toll sind ;) )

ja, hoffentlich _noch_   :roll:
Zitat
sind wenig im Vergleich von einem guten zu einem schlechten Algorithmus.

Ja, das will keiner abstreiten ;-)
Zitat
Implementiert erstmal einen ordentlichen Algorithmus, wenn ihr das habt, dann guckt mal ob sich ASM überhaupt lohnt.

willst du an _uns_ Zweifeln? ;-)

MfG
DDR-RAM

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #41 am: 31. May 2005, 16:56 »
Also,

Zitat
Zitat
Zitat
allerdings sollte bis dahin die Menschheit ihre inneren Konflikte lösen, sonst gehts zurück in die Steinzeit.
Soweit waren wir schonmal mit dem kalten Krieg. Ich glaube nicht, dass die Menschheit jemals ihre innersten Probleme lösen wird, leider.
Ist mir auch relativ egal, solange es mich nicht betrifft.
immer dieser Egoismus.  :shock:
Ich als kleiner Durschnitts-Otto-Normalverbraucher habe nichts an der Welt zu verändern, mein Einfluss ist zu gering. Und ich will nicht Politiker sein, denn alles, was man macht, ist falsch.
Ausserdem bezweifle ich, dass gewisse Menschen es jemals schaffen, die Welt zu erobern - genug Versuche gab es ja. Und erst, wenn die Welt ein Staat ist und auch geeint ist, wird es ueberhaupt gewisse Probleme nicht geben. Es gab genug Versuche, der Welt eine gemeinsame Sprache aufzubrummen - Interlingua, Esperanto - alles schiefgelaufen.

Wenn die Menschen sich umbringen - oder die Computer die Menschen fuer Ueberfluessig erachten - will ich schon lange eines natuerlichen Todes gestorben sein. Der Rest ist mir egal und das hat nix mit Egoismus zu tun.

Zitat
Das, was uns wahrscheinlich trennt, ist, dass ich glaube das Compiler (vielleicht in 20 Jahren, vielleicht eher) maximale Optimierung erreichen können.
Damit wären in vielleicht 20 Jahren die Computer den menschlichen Hirnen gleichgestellt, wenn nicht noch schlimmer. Das nennt man dann Singularität und die will ich nicht erleben :shock:

Zitat von: Legend
Boah leute, die 20-30% die ne gute(!) ASM Implementierung wohl gegenüber ner guten(!) Hochsprachenimplementation bringen wird

Wenn du alles von der Hochsprache implementieren lässt und demgegenueber das gleiche optimiert in Hand schreibst... das sind vielleicht 3-4%, im Extremfall (da lohnt es sich dann) dann auch mal 5 oder gar 6%.

Zitat von: Legend
sind wenig im Vergleich von einem guten zu einem schlechten Algorithmus.

Ja, der entscheidet ueberall um mehrfache 100% Unterschied.

Zitat von: Legend
Implementiert erstmal einen ordentlichen Algorithmus, wenn ihr das habt, dann guckt mal ob sich ASM überhaupt lohnt.

Lohnt sich in der Mehrzahl aller Fälle nicht wegen der Masse an Code. Es sei denn, man hat Spass dran :)

Svenska

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #42 am: 31. May 2005, 18:31 »
Zitat von: DDR-RAM

Zitat
sind wenig im Vergleich von einem guten zu einem schlechten Algorithmus.

Ja, das will keiner abstreiten ;-)


Ja warum streitet ihr euch dann hier überhaupt? Ja, 20-30% waren schon aus der Luft gegriffen, aber zumindestens früher war das durchaus noch möglich (und da hab ich auch schon programmiert, falls jemand auf die idee kommen sollte sich zu fragen warum mich das interressiert ;) )

GCC 3.4 und die aktuellen Intel Compiler usw. machen es einem da schon viel schwerer ;)

Aber wenn dann lohnt es sich auch mehr die Compiler zu optimieren als alles in Assembler zu optimieren - wenige (zwar grosse) Programme die verbessert werden, und dadurch laufen alle Programme schneller, als wenn man alle(!) Programme auf dieser Ebene optimieren wollte.

Ähnlich sieht es wohl auch innerhalb eines einzigen Programmes aus - in der Art das man dafür sorgen sollte auch nen aktuellen Compiler zu haben (der dann hoffentlich besser optimiert).
*post*

 

Einloggen