Seite 2 von 3

Verfasst: 06.12.2006 18:58
von MVXA
Hätte da mal so ne Idee, wie wäre es, wenn man das
xor eax, eax

durch ein
and eax, 0x00
ersetzt? Testen kann man es ja mal :).

Verfasst: 06.12.2006 19:14
von Marvin
MVXA hat geschrieben:Hätte da mal so ne Idee, wie wäre es, wenn man das

Code: Alles auswählen

xor eax, eax
durch ein

Code: Alles auswählen

and eax, 0x00
Als ich mich noch mit OS-Proggen befasst habe, hieß es immer, dass Ersteres das beste überhaupt sei, da es nur 1 Byte Opcode benötigt. Ob es schneller ist, weiß ich nicht, ich glaube aber nicht, dass man da noch viel Optimieren kann, schließlich ist EAX ja schon mit der schnellste Speicher, der von der CPU angesprochen werden kann, vlt holt man so ein paar Nanosekunden raus, mehr nicht.

//VERSUCH:
Meine Ergebnisse:
Debug Output hat geschrieben:Erster Versuch:
---CODE Start---
For i=0 To 10 000 000
!mov eax,7
!xor eax,eax
Next
----CODE End----
Needed time: 741 ms
----------------
Zweiter Versuch:
---CODE Start---
For i=0 To 10 000 000
!mov eax,7
!and eax,0
Next
----CODE End----
Needed time: 781 ms
und ohne !mov eax,7:
Debug Output hat geschrieben:Erster Versuch:
---CODE Start---
For i=0 To 10 000 000
!xor eax,eax
Next
----CODE End----
Needed time: 731 ms
----------------
Zweiter Versuch:
---CODE Start---
For i=0 To 10 000 000
!and eax,0
Next
----CODE End----
Needed time: 741 ms
Ein $00 hingegen führt dazu, dass ohne !mov eax,7 eine weitere Verlangsamung um 10 ms stattfindet, mit !mov eax,7 jedoch... Sieh selbst:
Debug Output hat geschrieben:Erster Versuch:
---CODE Start---
For i=0 To 100 000 000
!mov eax,7
!xor eax,eax
Next
----CODE End----
Needed time: 7591 ms
----------------
Zweiter Versuch:
---CODE Start---
For i=0 To 100 000 000
!mov eax,7
!and eax,$00
Next
----CODE End----
Needed time: 7390 ms
:allright:

//EDIT: Oops, jetzt hab ich ja völlig vergessen, warum ich eigentlich posten wollte:
NTQ hat geschrieben:Achso, ich würde vorschlagen, den größten Teil dieses Threads
auszulagern. Hat jemand was dagegen?
Nö, in keinster Weise <)

Verfasst: 06.12.2006 19:27
von MVXA
Hab aber mal wo gelesen, dass die and logik viel einfacher für den Prozessor
als eine xor sein soll.

Verfasst: 06.12.2006 19:34
von ts-soft
MVXA hat geschrieben:Hab aber mal wo gelesen, dass die and logik viel einfacher für den Prozessor
als eine xor sein soll.
<offtopic>
Einfacher für die CPU, wenn juckts, einfacher für mich ist wichtig. CPU ist
doch bezahlt :lol:
</offtopic>

Verfasst: 06.12.2006 20:35
von Marvin
Ich hab doch geschrieben, wenn man $00 benutzt, isses schneller als xor...
(bei zusätzlicher Benutzung von mov, also wenn eax einen Wert hat)

Verfasst: 07.12.2006 10:20
von NicTheQuick
--[Thread geteilt]--

Leider war in machen Beiträgen OffTopic und OnTopic. Falls hier also
irgendwas fehlen sollte, einfach nochmal schreiben. <)

Verfasst: 07.12.2006 11:50
von dige
Bild

Verfasst: 11.12.2006 23:18
von Deeem2031
Neue Version 2.01 jetzt auch für alle Nörgler als native x86 Exe. Ansonsten gibts nur Bugfixes und jetzt auch eine D_Optimizer.ini.
(Download siehe 1. Post)

Verfasst: 12.12.2006 08:54
von DrShrek
Erhalte einen Fehler: In Zusammenhang mit TailBite und ICE_SpriteFont Lib:
ICE_GetFPS.asm
The pipe has been ended

Verfasst: 29.12.2006 15:23
von NicTheQuick
Hab den selben Fehler mit dige, aber auf Deutsch:
Unbehandelte Ausnahme: System.FormatException: Die Eingabezeichenfolge hat das falsche Format.
bei System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Bollean parseDecimal)
bei System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
bei System.Int32.Parse(String s)
bei Val(String val)
bei Main()