P.S.: Übernehme keine Garantie, dass der Code funktioniert... Was noch fehlt, ist das Zuweisen von result... Aber die Assembler-Leute hier sollten das auch gebacken kriegen
_________________ "Für kein Tier wird so viel gearbeitet wie für die Katz'."
Registriert: Mi Mär 09, 2005 12:26 Beiträge: 53 Wohnort: Dornbirn
Frase die Variable randseed sollte static sein (sich den Wert merken, den sie das letzte mal hatte), sonst kommen immer die gleichen Zahlen raus... z.B. bein randex(10) immer 3 (Nur ne Hausnummer).
Die funktion randex ist bei mir schon lange im Einsatz, weil die rand Funktion in C++ ist langsam und umständlich zu bedienen
_________________ Good software is like sex, it's best when it's free
Registriert: Mi Mär 09, 2005 12:26 Beiträge: 53 Wohnort: Dornbirn
Und der return Wert is im EAX Register.
Durch den aufruf des _fastcalls wird genau dieser zurückgegeben (also braucht es kein return). Ich weiß aber wirklich net wie man das in Delphi macht. hat jemand ne Ahnung?
Oder sonst einfach randseed returnen, mcht das gleiche
_________________ Good software is like sex, it's best when it's free
assembler isn gutes stichwort nebenbei -
gibts irgend nen tutorial wo man die grundlegenden dinge lernen kann? (simple operationen wie + - * / oder das zuweisen von variablen, schleifen etc etc.)
die ganzen sachen häufen sich nämlich so das ich langsam was schnelleres als standart delphi gebrauchen könnte
_________________ I'm not the signature, I'm just cleaning the floor...
Hab hier irgendwo auf der Platte ein Assembler-Tutorial rumliegen, aber da wird "nur" ein ganzes Programm in Assembler beschrieben und nicht, wie man den Inline-Assembler von Delphi bedient. Auserdem ist das Tutorial ziemlich dürftig in Sachen Erklärungen...
_________________ "Für kein Tier wird so viel gearbeitet wie für die Katz'."
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Hier war doch vor einiger Zeit jemand im Forum unterwegs und wollte ein Ausführliches Assembler Werk verfassen. Such mal im Forum nach ... öhm Assebler!? oder EDX oder so. Eventuell findest du den Artikel wieder.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Wenn wir schon grade bei Assembler und Geschwindigkeit sind:
Warum eigentlich sind Multiplikationen so viel schneller als Divisionen? Und kann man dem Delphi Compiler irgendwie beibringen, wenn möglich eine Division in eine äquivalente Multiplikation umzuwandeln?
P.S.: Die Partikelengine schaut wirklich sehr hübsch aus... Und die ist so verdammt schnell...
_________________ "Für kein Tier wird so viel gearbeitet wie für die Katz'."
delphi übernimmt das verlässlich automatisch, wenn man versucht, konstate elemente nach links in einem Ausdruck zu bekommen oder ggf. zu klammern. dann vermeidet er wo möglich (leerzeichen richtig gesetzt!) divisionen und macht multiplikationen daraus. früher existierte mal eine schöne seite (optimalcode oder so) zu dem thema, aber die ist leider irgendwann vom netz gegangen.
Registriert: Mi Mär 09, 2005 12:26 Beiträge: 53 Wohnort: Dornbirn
Soweit ich weiß machen halbwegs gute compiler schon nen guten Code. Z.B. machen sie bei einer Division durch 2 oder Multplikation mit 0.5 ein Shift left, etc...
Aber wenn durch eine Variale dividiert wird kann er keine Multiplikation drauß machen, da müsste wie Geo bereits meinte sowieso ein Division durchgeführt werden.
Aber sooooooo langsam ist eine Division auch wieder nicht, dass man sich darum sorgen müsste. Hey heutige PC's haben bis zu 3,2 GHZ 3.200.000.000 Rechenoperationen pro Sekunde.... Um das auszuschöpfen kann man oft und viel dividieren
_________________ Good software is like sex, it's best when it's free
würde spontan sagen das ist nur bei konstanten möglich.
wenn du variablen hast müsste das ja so aussehn:
Code:
// anstatt
a := a / b;
// das hier
a := a * (1/b);
dann hast du ne division und ne multiplikation, also nicht wirklich eine optimierung ^^
ich weiß nicht, ob es compiler mit solchen funktionen gibt, aber ich könnte mir vorstellen
das das trotz allem ähnlich langsamer wird dadurch.
da geb ich aber keine garantie drauf
_________________ I'm not the signature, I'm just cleaning the floor...
Mitglieder in diesem Forum: 0 Mitglieder und 11 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.