Beiträge: 92
Themen: 10
Registriert seit: Nov 2007
Bewertung:
1
05.05.2025, 19:29
(Dieser Beitrag wurde zuletzt bearbeitet: 05.05.2025, 19:30 von NewProggie.)
Ich hab vorhin mal die sdl_update_rect_window() Funktion von dir ein bisschen optimiert, in dem ich erst die zweite Schleife vektorisiert habe und anschließend ein "händisches" double buffering ausprobiert habe.
Dabei hab ich auch gleich den Mauszeiger in der Mitte des Bildschirms (Fensters) innerhalb der sdl_event_loop() noch gefangen, weil das im Original genauso ist.
Beiträge: 640
Themen: 3
Registriert seit: Nov 2007
Bewertung:
18
Das klingt spannend. Wie hast du denn die zweite Schleife vektorisiert, wenn ich fragen darf?
Beiträge: 92
Themen: 10
Registriert seit: Nov 2007
Bewertung:
1
05.05.2025, 20:12
(Dieser Beitrag wurde zuletzt bearbeitet: 05.05.2025, 20:13 von NewProggie.)
(05.05.2025, 19:53)HenneNWH schrieb: Das klingt spannend. Wie hast du denn die zweite Schleife vektorisiert, wenn ich fragen darf?
Entweder darauf vertrauen, dass der Compiler das selbst checkt, oder in meinem Fall über NEON instructions (speziell vld1_u8), weil ich auf einem M4 (ARM) Macbook unterwegs bin gerade.
Lass mich wissen, wenn du denkst, dass der Code soweit portiert ist und es Engstellen bei der Performance gibt. Da helfe ich gerne mit. Mein CMake Pull-Request auf GitHub dümpelt auch noch so vor sich hin und kann eigentlich gemerged werden ;-) Eine CI könnte ich auch auf GitHub schon mal aufsetzen für das Projekt.
Beiträge: 640
Themen: 3
Registriert seit: Nov 2007
Bewertung:
18
@NewProggie: Dass der Compiler das selbst checkt war damals als ich HPC gemacht habe eher eine Seltenheit.
Händisch nachgucken und eine eigene Meinung haben ist da das Beste.
Und natürlich: Assembler können!
Beiträge: 2.532
Themen: 25
Registriert seit: Aug 2006
Bewertung:
17
Wie kann ich jetzt das Programm kompilieren? Nur mit "make -f Makefile_old"? Oder auch irgendwie mit cmake? Damit kenn ich mich noch nicht aus.
Beiträge: 92
Themen: 10
Registriert seit: Nov 2007
Bewertung:
1
(06.05.2025, 16:26)Obi-Wahn schrieb: Wie kann ich jetzt das Programm kompilieren? Nur mit "make -f Makefile_old"? Oder auch irgendwie mit cmake? Damit kenn ich mich noch nicht aus.
Make geht wie gehabt.
Mit CMake geht es jetzt neuerdings auch:
Code: mkdir build
cmake -B build -S .
cmake --build build --parallel
Über -G kannst du dir mit CMake auch eine Projektdatei generieren lassen (z.B. für Eclipse, Visual Studio, Xcode o.ä.)
Beiträge: 640
Themen: 3
Registriert seit: Nov 2007
Bewertung:
18
Habs so gemacht, dass beide unabhängig voneinander gehen.
Code: make -f Makefile_old
ist die bisherige Variante, welche ich aktuell zum direkten probieren noch behalten will.
CMake ist natürlich etwas moderner, komfortabler und Upper-Class!
Bisher hab ich CMake noch nicht sinnvoll nutzen können,
da make gereicht hat, aber CMake war mein Favorit für "wenn's mal fertig ist"!
@NewProggie: Danke!
Beiträge: 2.532
Themen: 25
Registriert seit: Aug 2006
Bewertung:
17
07.05.2025, 09:29
(Dieser Beitrag wurde zuletzt bearbeitet: 07.05.2025, 16:06 von Obi-Wahn.)
(06.05.2025, 19:30)NewProggie schrieb: Code: mkdir build
cmake -B build -S .
cmake --build build --parallel
Danke!  Damit hat es unter Windows und Linux funktioniert!
Die erstellte "ngen_cc.exe.exe" ist übrigens nur 359kb groß. Die "ngen_gcc.exe" ist 461kb groß.
Edit: Und mit dem UCRT-Compiler sind es nur noch 235kb.
Beiträge: 640
Themen: 3
Registriert seit: Nov 2007
Bewertung:
18
Gestern, 05:15
(Dieser Beitrag wurde zuletzt bearbeitet: Gestern, 05:15 von HenneNWH.)
Klugsch**ßeralarm: Diese Dateien enthalten auch Debugginginformationen.
Probier mal:
Darauf kommt's an.
Beiträge: 2.532
Themen: 25
Registriert seit: Aug 2006
Bewertung:
17
Code: $ size ngen_*
text data bss dec hex filename
115748 2288 10688 128724 1f6d4 ngen_cc.exe.exe
115780 2288 10688 128756 1f6f4 ngen_gcc_mingw.exe
89880 2192 8128 100200 18768 ngen_gcc_ucrt.exe
cmake und mingw sind recht ähnlich, aber ucrt ist deutlich anders.
Beiträge: 640
Themen: 3
Registriert seit: Nov 2007
Bewertung:
18
Gestern, 12:55
(Dieser Beitrag wurde zuletzt bearbeitet: Gestern, 20:43 von HenneNWH.)
Interessant: Probier mal noch
Zur Erklärung: text = Programmcode, data = intitialisierte Daten (Tabellen, ...), BSS = uninitialisierte Daten
Edit: Wenn mir -O2 kompiliert sieht das ganze so aus:
Code: ls -al ngen_*
-rwxr-xr-x 1 henne henne 118720 8. Mai 21:17 ngen_cc
-rwxr-xr-x 1 henne henne 313000 8. Mai 21:18 ngen_gcc
Code: size ngen_*
text data bss dec hex filename
84881 3100 71912 159893 27095 ngen_cc
70390 3028 71784 145202 23732 ngen_gcc
Code: file ngen_*
ngen_cc: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=dcedcc49247f06e7965523c565bf4381c43260b4, for GNU/Linux 3.2.0, not stripped
ngen_gcc: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=b2d28aecb7623aea8e291fdd046c6bca8b9514ab, for GNU/Linux 3.2.0, with debug_info, not stripped
Beiträge: 2.532
Themen: 25
Registriert seit: Aug 2006
Bewertung:
17
Das ist unter Windows und MSYS nicht sonderlich aussagekräftig:
Code: $ file ngen_*
ngen_cc.exe.exe: PE32+ executable for MS Windows 5.02 (console), x86-64, 19 sections
ngen_gcc.exe: PE32+ executable for MS Windows 5.02 (console), x86-64, 19 sections
Beiträge: 640
Themen: 3
Registriert seit: Nov 2007
Bewertung:
18
Wenn du mal eine Datei ohne Dateiendung hast, ist dieses Programm sehr hilfreich.
Hast du schon die neue Version mit dem kleinen Mauszeiger probiert?
Die läuft wesentlich flüssiger.
|