Just another Purebasic Optimizer V 2.01

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag 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 :).
Bild
Marvin
Beiträge: 497
Registriert: 17.07.2005 14:42
Wohnort: Krikkit

Beitrag 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 <)
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Hab aber mal wo gelesen, dass die and logik viel einfacher für den Prozessor
als eine xor sein soll.
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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>
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Marvin
Beiträge: 497
Registriert: 17.07.2005 14:42
Wohnort: Krikkit

Beitrag 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)
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

--[Thread geteilt]--

Leider war in machen Beiträgen OffTopic und OnTopic. Falls hier also
irgendwas fehlen sollte, einfach nochmal schreiben. <)
Benutzeravatar
dige
Beiträge: 1239
Registriert: 08.09.2004 08:53

Beitrag von dige »

Bild
"Papa, ich laufe schneller - dann ist es nicht so weit."
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag 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)
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
DrShrek
Beiträge: 1970
Registriert: 08.09.2004 00:59

Beitrag von DrShrek »

Erhalte einen Fehler: In Zusammenhang mit TailBite und ICE_SpriteFont Lib:
ICE_GetFPS.asm
The pipe has been ended
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag 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()
Antworten