Wie Arbeitet CompareMemory() ??
Die Lib hab ich übrigens ins ShowCase gestellt. Gestern Abend hab ich übrigens noch einen Bug der Library gefixt, der allerdings nicht von mir stammte, sondern auch in der alten Library war. Außerdem hab ich heut noch die Math-Library optimiert, auch wenn ich nicht viel rausholen konnte. Aber das ganze steht ja jetzt auch im ShowCase.

[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
- remi_meier
- Beiträge: 1078
- Registriert: 29.08.2004 20:11
- Wohnort: Schweiz
Nur ein kleiner Tipp nebenbei für die, dies noch nicht wussten:
Ist schön, dass du RoundL() eingefügt hast, aber bis auf die Ausnahme 4.5
(es gibt noch weitere mit .5) kann das PB selbst auch:
Sowieso ist PBs Round-Funktion total unnütz 
Ist schön, dass du RoundL() eingefügt hast, aber bis auf die Ausnahme 4.5
(es gibt noch weitere mit .5) kann das PB selbst auch:
Code: Alles auswählen
x.f = 4.55
y.l = x
Debug y
x.f = 4.500001
y.l = x
Debug y
x.f = 4.5
y.l = x
Debug y
x.f = 3.5
y.l = x
Debug y
x.f = 4.35
y.l = x
Debug y

- remi_meier
- Beiträge: 1078
- Registriert: 29.08.2004 20:11
- Wohnort: Schweiz
"gecastet" ? "explizit" ?
Was dasvon ist denn welches? ^^
Naja, rein vom Aufbau der Proceduren würde ich sagen das die RoundL-Procedure (also die, die zum näheren Ganzzahlwert rundet) schneller ist. Nicht weil ich die geschrieben habe, sondern weil die Procedure einen Long zurückgibt und keinen Float. Auch wenn sich das vielleicht unlogisch anhört
Was dasvon ist denn welches? ^^
Naja, rein vom Aufbau der Proceduren würde ich sagen das die RoundL-Procedure (also die, die zum näheren Ganzzahlwert rundet) schneller ist. Nicht weil ich die geschrieben habe, sondern weil die Procedure einen Long zurückgibt und keinen Float. Auch wenn sich das vielleicht unlogisch anhört


[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
- remi_meier
- Beiträge: 1078
- Registriert: 29.08.2004 20:11
- Wohnort: Schweiz
Ja, er meint mit gecastet Typecasting und explizit den Prozedurenaufruf.
Also wenn RoundL schneller sein soll, musst du schon was gezaubert haben,
was mich persönlich sehr interessieren würde
PBs Code:
Da wird wohl der Prozedurenaufruf schon sehr viel wegnehmen!
Also wenn RoundL schneller sein soll, musst du schon was gezaubert haben,
was mich persönlich sehr interessieren würde

PBs Code:
Code: Alles auswählen
FLD dword [v_x]
PUSH eax
FISTP dword [esp]
POP dword [v_y]
Wie ich es vermutet habe, mit ein bischen ändern der ControlFlags der FPU wird nichtmehr zum nächst, näheren Wert gerundet:
Meiner Procedure würde das nichts ausmachen, weil die die Flags immer neu setzt.
Code: Alles auswählen
!FNSTCW WORD[Esp-6]
!MOV AX,WORD[Esp-6]
!OR AH, 12
!MOV WORD[Esp-8],AX
!FLDCW WORD[Esp-8]
x.f = 4.8
y.l = x
Debug y
!FLDCW WORD[Esp-6]

[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]