Jammer-Thread

Hier kann über allgemeine Themen diskutiert werden, die sonst in kein Forum passen.
Insbesondere über Szene, Games, Kultur, Weltgeschehen, Persönliches, Recht, Hard- und Software.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4392
Registriert: 26.02.2009, 00:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Schrompf »

Ich kriege hier bei praktisch jedem einzelnen Request ein NET::ERR_CERT_DATE_INVALID. Könnte aber auch ein Bug in meiner Ubuntu20-Opera-Install sein, die vergisst auch alle Passwörter in der Sekunde, in der sie Dich fragt, ob sie sich das merken soll.
Häuptling von Dreamworlds. Baut an was Neuem. Hilft nebenbei nur höchst selten an der Open Asset Import Library mit.
VirtualLabs2000
Beiträge: 14
Registriert: 26.02.2002, 11:34
Kontaktdaten:

Re: Jammer-Thread

Beitrag von VirtualLabs2000 »

Alexander Kornrumpf hat geschrieben:
22.10.2021, 16:30
Ist denn Mac wirklich so viel geiler?
Nein :-D

Ok, um ehrlich zu sein: Ist Geschmackssache würde ich sagen. Unter MacOS sind viele Konzepte einfach etwas anders. Und entweder man mag das oder nicht.

Ich muss beruflich nen MacBook Pro zum Entwickeln und für Office-Sachen benutzen. Ich rege mich jeden Tag wieder drüber auf. Es geht los mit diesem blöden Fenster-Management - wenn ein Programm zwei Fenster offen hat (z.B. das Outlook-Hauptfenster und ne Mail), dass dann beim Wechsel mit CMD+Tab oder auch beim Klick auf das Programmicon nicht als zwei unabhängige Fenster behandelt werden. Fensterwechsel innerhalb eines Programms ist dann nur über Rechtsklick auf das Programmicon möglich.

Dann geht es weiter - Fenster vernünftig anordnen ist kaum möglich. Vollbild blendet wirklich alles aus - auch die Programmleiste. Irgendwie bin ich mit mehreren Fenstern dauernd am schieben, ohne wirklich zufrieden zu sein.

Dann das Schließen von Programmen... da klickt man auf das rote X, das Programm geht zu aber irgendwie ist es noch nicht zu 100% beendet. Nur mit Rechtsklick unten auf das Icon in der Leiste und dann "Beenden" wird es wirklich komplett beendet.

Und vom Finder als Dateiverwaltungsprogramm fange ich besser gar nicht erst an... ja, das mit der mehrspaltigen Ansicht ist ja ganz nett gegenüber dem Windows-Explorer. Aber das wars dann auch. Ansonsten hab ich ständig das Gefühl, dass ich nicht alle Informationen über die Dateien/Ordner angezeigt bekomme.
Was eigentlich auch mein persönlicher Hauptkritikpunkt an MacOS ist und für mach andere wahrscheinlich ein großer Vorteil: Diese oft extrem fokussierten Ansichten im System. Motto: "Es ist nicht wichtig wo der Ordner liegt, den du gerade geöffnet hast oder wie groß er ist - wichtig ist nur, dass du jetzt mit diesem Ordner arbeitest" - aaaah... genauso die möglichen Systemeinstellungen. Überall hab ich das Gefühl, dass es doch eigentlich viel mehr Einstellungen geben müsste und das System mir die vorenthält. Ich mag die großen Einstellungsdialoge unter Windows, wo ich mir alles genau aussuchen kann.

Und was dann gerade (Web-)Entwickler oft als großen Vorteil anpreisen, nämlich die Linux-Shell: Naja, die gibt es jetzt seit 2 Jahren auch unter Windows. Wissen nur viele noch nicht.

Je mehr ich MacOS benutzen (muss), desto weniger mag ich es. Dagegen stören mich persönlich diese kleinen Ungereimtheiten unter Windows gar nicht. EnvVar-Einstellungsdialog im Windows 2000-Stil? Den Dialog benutze ich kaum und wenn ich mal dort bin, ist es immer wie ne kleine schöne Zeitreise in die Vergangenheit. Kurz ein paar Erinnerungen aufleben lassen, die neuen Variablen einstellen, Dialog schließen.

Ein absolutes Besser/Schlechter lässt sich zwischen Windows und MacOS wohl auch ausdrücken.
D-eath
Beiträge: 44
Registriert: 28.08.2009, 19:37
Alter Benutzername: TrunkZ
Echter Name: Thomas

Re: Jammer-Thread

Beitrag von D-eath »

Für den Fenster-Mist benutze ich https://rectangleapp.com/ - ohne wäre ich schon längst verrückt geworden.
Ansonsten nervt auf dem Mac diese unfassbar restriktive Scheiße manchmal. VS Code oder Qt Creator startet mal wieder den Debugger? Bitte per Passwort oder Touch ID bestätigen. Irgendwas will den Zugriff auf deinen Dokumente-Ordner? Bitte bestätigen! Die entsprechende Applikation in den entsprechenden Zugriffsreiter eintragen funktioniert leider auch nicht immer.

Ich benutze auch sehr gerne WSL, funktioniert im Alltag prima.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4392
Registriert: 26.02.2009, 00:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Schrompf »

Ich hasse CMake
Häuptling von Dreamworlds. Baut an was Neuem. Hilft nebenbei nur höchst selten an der Open Asset Import Library mit.
Benutzeravatar
Lord Delvin
Establishment
Beiträge: 364
Registriert: 05.07.2003, 11:17

Re: Jammer-Thread

Beitrag von Lord Delvin »

Schrompf hat geschrieben:
27.10.2021, 15:19
Ich hasse CMake
Ich kann zwar verstehen, wie man zu der Aussage kommt, hasse es aber noch viel mehr, wenn Leute kein CMake verwenden :-/
Benutzeravatar
Jonathan
Establishment
Beiträge: 1824
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Jonathan »

Flashback zum Lateinunterricht vor etlichen Jahren, als wir über Skylla und Charybdis gesprochen haben :D
Lieber dumm fragen, als dumm bleiben!
Benutzeravatar
Jonathan
Establishment
Beiträge: 1824
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Jonathan »

Ich habe eine halbwegs potente Grafikakrte (RTX 2080 Ti) und einen G-Sync-fähigen Monitor. Ich könnte eigentlich Spiele mit hoher Auflösung und vielen Details flüssig spielen. Aber unter Volllast dreht mein Lüfter hoch und ist mir zu laut, also will ich, dass mein System hohe Auflösungen und maximale Details bei halber Auslastung schafft. Meh.
Für laute Ballerspiele wäre das nicht so schlimm, aber wenn es mal ruhiger und atmosphärischer sein soll nervt das Lüftergebrülle einfach.
Wo ich gerade so darüber nachdenke: Wie funktioniert eigentlich Wasserkühlung, wenn alle Grafikkarten die ich in letzter Zeit gesehen habe schon integrierte Lüfter haben? Kann man sowas einfach so nachrüsten? Lohnt das? Im normalen Betrieb ist das lauteste meine HDD, ich bin schon immer happy, wenn die sich nach ein paar Minuten Nichtbenutzung abschaltet.
Lieber dumm fragen, als dumm bleiben!
Aharabada
Beiträge: 8
Registriert: 24.03.2016, 20:57

Re: Jammer-Thread

Beitrag von Aharabada »

Jonathan hat geschrieben:
30.10.2021, 20:30
Ich habe eine halbwegs potente Grafikakrte (RTX 2080 Ti) und einen G-Sync-fähigen Monitor. Ich könnte eigentlich Spiele mit hoher Auflösung und vielen Details flüssig spielen. Aber unter Volllast dreht mein Lüfter hoch und ist mir zu laut, also will ich, dass mein System hohe Auflösungen und maximale Details bei halber Auslastung schafft. Meh.
Für laute Ballerspiele wäre das nicht so schlimm, aber wenn es mal ruhiger und atmosphärischer sein soll nervt das Lüftergebrülle einfach.
Wo ich gerade so darüber nachdenke: Wie funktioniert eigentlich Wasserkühlung, wenn alle Grafikkarten die ich in letzter Zeit gesehen habe schon integrierte Lüfter haben? Kann man sowas einfach so nachrüsten? Lohnt das? Im normalen Betrieb ist das lauteste meine HDD, ich bin schon immer happy, wenn die sich nach ein paar Minuten Nichtbenutzung abschaltet.
Da ich selbst sowohl CPU als auch GPU (1080Ti) aktuell unter Wasser habe fühle ich mich qualifiziert dazu etwas zu schreiben:
Eine Wasserkühlung kann man bei einer Grafikkarte ganz einfach nachrüsten. Der Kühler ist nur durch ein paar Schrauben (und ein Kabel für die Lüfter) an der Grafikkarte befestigt. Das wichtigste worauf man beim Kauf eines Kühlblocks achten muss ist, dass er mit dem exakten Grafikkartenmodell kompatibel ist (z.B. passt ein Block für die "2080Ti Founders Edition" ggf. nicht auf eine "Asus 2080Ti Strix").

Bei meinem PC ist die Grafikkarte selbst nach längerer Spielzeit unter Volllast eigentlich nicht viel mehr als 20°C über Raumtemperatur. Und da ich einen riesigen Kühlkörper (40cm*40cm) habe laufen die Lüfter immer nur relativ leise (wobei ich auch immer Kopfhörer aufhabe und deshalb sowieso nicht viel höre). Ein großer Nachteil von Wasserkühlungen ist allerdings, dass die Pumpe immer laufen muss. Man kann natürlich wenn nicht viel Last anliegt die Drehzahl runterstellen, aber die Pumpe wird immer ein leises Summen von sich geben müssen, wobei es da auch vom Gehäuse abhängt ob man das hören kann oder nicht und bei mir ist es glaube ich auch leiser als die HDDs.

Meiner Meinung nach lohnt sich Wasserkühlung auch nur wenn einem das Geld nicht weh tut.
All in one Wasserkühlungen existieren soweit ich weiß nicht wirklich für Grafikkarten, also müsste man sich so wie ich eine custom Wasserkühlung bauen. Wenn man es so sehr "übertreibt" wie ich dann gibt man dafür allerdings auch mehr Geld aus als die meisten Leute für ihren gesammten PC ausgeben (aber weniger als für ein Flaggschiff-Smartphone ;). Aber selbst eine "minimale" Wasserkühlung kostet immer noch ordentlich (der Kühlblock alleine kostet schon 100€ - 150€).
Benutzeravatar
Jonathan
Establishment
Beiträge: 1824
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Jonathan »

Danke für die Infos. Unterm Strich erscheinen mir Wasserkühlungen für mich dann doch wohl eher den Aufwand nicht wert. Vielleicht sollte ich auch einfach öfters mit Kopfhörern zocken, dann hört man die Lüfter ja auch nicht mehr :D
Lieber dumm fragen, als dumm bleiben!
Benutzeravatar
Jonathan
Establishment
Beiträge: 1824
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Jonathan »

Ich wollte Blending zwischen Animationen implementieren. Die Idee ist simpel, man hat im Grunde n Animationen die gleichzeitig abgespielt werden, alle mit einem Gewicht w_i und man interpoliert die für jeden Frame gemäß der Gewichte. So kann man fließend zwischen Gehen und Laufen interpolieren, oder eben zwischen Animationen überblenden (indem die Gewichte in recht kurzer Zeit von 1 auf 0 bzw. von 0 auf 1 gehen).
Um Quaternionen zu interpolieren gibt es ja SLERP, was auch von GLM implementiert wird. Aber was, wenn man zwischen 3 oder mehr Quaternionen interpolieren will? Tja, das scheint gar nicht so leicht zu sein. Ich habe jetzt jedenfalls ein 10 Seiten Mathepaper gefunden, dass das Problem löst, allerdings muss man dazu eine Eigenwertzerlegung von einer Matrix, in der die Quaternionen und Gewichte stehen durchführen. Der Algorithmus soll prinzipiell effizient sein, aber ob ich das wirklich komplett durcharbeiten und implementieren will, weiß ich noch nicht.
Andere Quellen sagen, man könne auch einfach die Werte direkt interpolieren und danach normieren oder so. Das klappt wohl ziemlich gut, wenn die Quaternionen alle relativ ähnlich sind, bloß ist ja genau das bei Animationen nicht unbedingt der Fall.
Vielleicht ich auch eh erstmal einen Hack ein bzw. interpoliere eh nur zwischen 2 Animationen. Das ganze Thema wird ja ohnehin noch komplexer, so muss man ja z.B. zum einen Animationen synchronisieren, was den Startzeitpunkt und die Geschwindigkeit angeht (so, dass Beispielsweise sowohl bei der Geh- als auch bei der Laufanimation der rechte Fuß zur gleichen Zeit vorne ist).
Ist halt doch immer alles mehr Arbeit, als man denkt.
Lieber dumm fragen, als dumm bleiben!
Benutzeravatar
Schrompf
Moderator
Beiträge: 4392
Registriert: 26.02.2009, 00:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Schrompf »

Ich habe bisher nur vereinzelt "professionelle" Engines erlebt, aber alle, die ich gesehen habe, haben einen Tree aufgebaut, in dem man immer nur zwei Anims gewichtet blenden konnte. Und jede weitere Anim war dann ein weiteres Tree Level.
Häuptling von Dreamworlds. Baut an was Neuem. Hilft nebenbei nur höchst selten an der Open Asset Import Library mit.
Matthias Gubisch
Establishment
Beiträge: 335
Registriert: 01.03.2009, 20:09

Re: Jammer-Thread

Beitrag von Matthias Gubisch »

Koordinatensysteme mal wieder :(
Da versucht man 2 Tage zu verstehen was man beim Frustrum Culling im ComputeShader verbockt hat, und am Ende war es ein fehlendes
#define GLM_FORCE_LEFT_HANDED. Das hat dazu geführt, dass ich anstatt der Objekte hinter mir die Objekte vor mit geculled habe...

2. Gejammer
Nvidia: da updatet man nur Grafikkartentreiben, was dazu führt dass meine Engine beim Beenden die Vulkan Instanz nicht mehr zuerstören kann sondern irgendwo im Treiber hängen bleibt.
Bevor man den Kopf schüttelt, sollte man sich vergewissern einen zu haben
Benutzeravatar
Lord Delvin
Establishment
Beiträge: 364
Registriert: 05.07.2003, 11:17

Re: Jammer-Thread

Beitrag von Lord Delvin »

Dieser Moment, wenn du fast alle deine Tests zum laufen gebracht hast, im Code was komisches gesehen hast, einen weiteren Test aufgeschrieben und *natürlich* passiert da, was du befürchtet hast. Ich werd's einfach nie bis zum Release schaffen :-/
Matthias Gubisch
Establishment
Beiträge: 335
Registriert: 01.03.2009, 20:09

Re: Jammer-Thread

Beitrag von Matthias Gubisch »

Krishty's Post im Anti-Jammer Thread, und die Tatsache dass MSBuild immer mal wieder interne Errors beim Linken wirft, haben mich motiviert doch mal den Umzug nach CMake anzugehen.
Nur um festzustellen dass *zensiert* Cmake noch keine C++20 Modules unterstützt....
und die ganze Aktion damit für den A*** ist, da ich mein Projekt vor einigen Wochen komplett auf Modules umgebaut habe...
Bevor man den Kopf schüttelt, sollte man sich vergewissern einen zu haben
Benutzeravatar
Krishty
Establishment
Beiträge: 7640
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Autsch, tut mir leid!

Schmeiß deinen Port nicht weg; leg ihn nur zur Seite. Ninja hat vor ’nem Jahr ein verändertes Dependency-System bekommen (dyndep), und vom Lesen her klang das stark nach einem Mechanismus, der C++ Modules erlaubt. Riecht nach Absicht, und nach einem anstehenden CMake-Update.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 7640
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Eine Woche in der Umstellung MSBuild > Ninja; In-Source-Builds > Out-of-Source-Builds; Visual C++ > Clang

Erster Compiler-Bug in Clang: in einem Unit Test wird isWithin('A', hexdigit, 'F') kompiliert zu 0 <= hexdigit && hexdigit <= 'F' und ist damit viel zu oft true.

Sobald ich das irgendwie isoliere, verschwindet der Fehler. Ich kompiliere mit Og (also debuggable Code statt optimiertem Code), und trotzdem verschluckt Clang einen Store-Befehl für den ersten Operanden.

Ich hatte auch schon einen LLVM-Linker-Bug beim Verarbeiten von SSE-Code, und der Einzige im Internet, der den auch schonmal hatte, war mal wieder Bruce Dawson.

Der andere nervige Bug im LLVM-Linker ist, dass er inkrementelles Linken nicht richtig macht. Es wird zwar neu gelinkt, aber der alte Code läuft noch. Ich muss dann jedes Mal das Kompilat löschen und neu bauen …

NATÜRLICH wird mit Clang/LLVM nichts besser als mit Visual C++, sondern nur anders. Wäre ja auch zu einfach gewesen. fml
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Tiles
Establishment
Beiträge: 1942
Registriert: 11.01.2003, 14:21
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Tiles »

Ich hasse Webseiten wo du jedesmal das Passwort neu eingeben musst weil das nicht im Browser gespeichert werden kann -.-
Free Gamegraphics, Freeware Games https://www.reinerstilesets.de
Die deutsche 3D Community: https://www.3d-ring.de
Benutzeravatar
Krishty
Establishment
Beiträge: 7640
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Neue Ninja-LLVM-Sorge: Die Windows-Version vom LLVM-Linker ist abhängig von Microsofts Manifest Tool, dessen Pfad als Umgebungsvariable übergeben werden muss. Ninja kann aber keine Umgebungsvariablen setzen! Die Rückkehr der Wrapper-Skripte. fml

(Still better than using MSBuild, though)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 7640
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Ninja: „Build-Operationen müssen eine Eingabe- und eine Ausgabedatei angeben. Diese müssen unterschiedlich sein.“

Microsofts Manifest Tool: „Eingabe = Ausgabe. FU“

Krishty: „Dann packe ich halt zwei Befehle in eine Operation: Dass die Datei kopiert wird, und dass die Kopie verändert wird. Dann gibt’s eine Eingabe- und eine Ausgabedatei.“

Ninja: „Jede Operation darf nur einen Befehl haben BRRRRRRRRR“

Krishty: cp $in $out && mt.exe -inout=$out

Windows: „eS gIbT kEiN cp mEiNtEsT dU COPY?“

Krishty: COPY /B /Y $in $out && mt.exe -inout=$out

Ninja: HARRHARR das geht nur auf Linux, wo Ninja direkt an die Shell weiterleitet! Auf Windows musst du cmd.exe /c davor schreiben!

Krishty: cmd.exe /c COPY /B /Y $in $out && mt.exe -inout=$out

Windows: „HURR DURR sOnDeRzEiChEn KaNn COPY nIcHt“

Krishty: cmd.exe /c XCOPY /Y $in $out && mt.exe -inout=$out

Windows: „Bezeichnet $out eine Datei oder ein Verzeichnis? (D)atei / (V)erzeichnis“

Ninja: „lol no stdin u jelly ;)“

SS64:
Adding a wildcard (*) to the end of the destination will suppress this prompt and default to copying as a file:
C:\> xcopy foo.txt bar.txt*
C:foo.txt
1 File(s) copied

This requires the source and target file extensions to be the same length, typically 3 characters.
Krishty: cmd.exe /c XCOPY /Y $in $out* && mt.exe -inout=$out

Windows: The system cannot find the file specified.

WHAT THE FUCK bin ich bei versteckte Kamera oder was kann ich 2021 keine Dateien mehr kopieren WTF IS THIS SHIT ICH WILL NUR EIN FUCKING PROGRAMM AUFRUFEN
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Lord Delvin
Establishment
Beiträge: 364
Registriert: 05.07.2003, 11:17

Re: Jammer-Thread

Beitrag von Lord Delvin »

Hatte heute auch dreimal Spaß mit Buildsystemen. Erst haben sich die Pfade in Variablen auf Windows und Linux anders verhalten. Dann habe ich gelernt, dass "$../" fehlerfrei akzeptiert wird und dann musste ich auch noch lernen dass jemand, weil das einfach besser ist, ein makefile von hand geschrieben hat, dass natürlich kein -j korrekt verarbeiten kann...WTF. Ich muss mehr an meinem eigenen Projekt arbeiten :-/
Benutzeravatar
Krishty
Establishment
Beiträge: 7640
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Lord Delvin hat geschrieben:
03.12.2021, 15:45
ein makefile von hand geschrieben hat, dass natürlich kein -j korrekt verarbeiten kann...
Ist der am weitesten verbreitete Fehler, von dem ich im Zusammenhang mit Makefiles gehört habe.

In Vergleichen mit Ninja wird das als direkter Vorteil aufgezählt, dass alles immer maximal parallel läuft und Wettläufe dadurch viel schneller auffallen.

(Plus Vorsichtsmaßnahmen wie, dass doppelte Ziele verboten sind statt sich still zu überschreiben.)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 7640
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Krishty hat geschrieben:
02.12.2021, 23:44
WHAT THE FUCK bin ich bei versteckte Kamera oder was kann ich 2021 keine Dateien mehr kopieren WTF IS THIS SHIT ICH WILL NUR EIN FUCKING PROGRAMM AUFRUFEN
… und das ist sowieso umsonst, denn:

Das Manifest Tool kann keine Pfade mit Leerzeichen drin. Die MSDN-Foren und der Bug Tracker von Visual Studio sind voll von Bug Reports, dass man keine EXEs gelinkt kriegt, wenn der Benutzername ein Leerzeichen enthält. Und NATÜRLICH sind die alle geschlossen mit
https://developercommunity.visualstudio.com/t/vs2017-general-error-c1010070-failed-to-load-and-p/700496 hat geschrieben:Closed - Other Product
The failure happened when running MT.exe, which is owned by Windows team. Please provide feedback using Windows 10 feedback hub store app.
HAHAHAHA

Fun fact: Hier bringt auch keine andere Toolchain irgendwas, da LLVM & Co. kein eigenes Manifest-Tool anbieten, sondern auf das aus dem Windows-SDK zurückgreifen.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 7640
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Oh geil. Gerade, als ich meinen Ninja-Umstieg in Angriff genommen habe, hat das Visual C++-Team einen Artikel über Build-Performance geschrieben:

https://devblogs.microsoft.com/cppblog/ ... d-tune-up/

Geile Takeaways:

Antivirus. Dass „Anti“virenprogramme kaum weniger schlimm als echte Malware sind und für immer verbannt und verbrannt gehören, ist ja so eine Leier von mir. Aber das hier ist krass:
C++ builds produce a lot of intermediate files and we often see the file system as a bottleneck there. With your antivirus scanning all build outputs, the problem is greatly amplified.

Windows Defender Antivirus automatically excludes most of the common build tools when they are found in the default install locations. But if you install Visual Studio in a custom location or use many additional build tools, your build throughput might be affected.
Wie geil! Microsoft hat den Defender von Haus aus voreingestellt, die Visual Studio-Prozesse und ihre Ausgabedateien nicht zu scannen, weil das zu viel Build Performance auffressen würde! Jetzt hätte ich mal richtig Bock, davon ausgehend einen Exploit zu bauen! (Woran erkennt Defender, dass die Datei vom Compiler geschrieben wird, und nicht von jemand anders? Wie genau wird die Installation Location überprüft? Da kann man bestimmt wunderbar eingreifen. Oh die Möglichkeiten!)

Echte Parallelität in Visual Studio 2022. Ich hatte ja erklärt, dass Visual Studio zwar mehrere Dateien parallel kompiliert, dass Compiler/Linker/Resource Compiler/Shader Compiler als serielle Schritte laufen. Der Artikel erklärt, dass sie ein echtes paralleles System mit irgendeinem VS2019-Update eingeführt, aber nicht aktiviert hatten, und dass es mit VS2022 ausgeliefert wird.

(Außerdem, dass es ein hoch komplexes Thema ist. Ähm … die erste Ninja-Version wurde an einem Wochenende hingehackt, LOL!)

Am geilsten ist der Abschnitt unten mit:

„Kompilieren Sie auf einer Maschine mit 192 Kernen, installieren Sie mindestens Windows Server 2019. Die 2016er Version ist sehr schlecht darin, mehr als 64 Instanzen der selben Exe zu starten“

und

Auf einer Maschine mit 192 Kernen sollten Sie als erstes sicherstellen, dass Ihr Antivirenprogramm abgeschaltet ist

BWAHAHAHA

Wollt ihr sehen, wie viel Unterschied der Defender macht? Zweiter Lauf hier mit Defender, vierter ohne:
Bild

HAHAHAHA

Ich drücke Enter und Ninja goes BRRRRRRRRRRRRRR … nach vier Sekunden 591 von 591 Dateien kompiliert. So lange braucht Visual Studio hier schon, um überhaupt MSBuild zu starten.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Lord Delvin
Establishment
Beiträge: 364
Registriert: 05.07.2003, 11:17

Re: Jammer-Thread

Beitrag von Lord Delvin »

Krishty hat geschrieben:
07.12.2021, 18:50
BWAHAHAHA
+1 :)
Benutzeravatar
Krishty
Establishment
Beiträge: 7640
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Ich vergaß:
Krishty hat geschrieben:
07.12.2021, 18:50
„Kompilieren Sie auf einer Maschine mit 192 Kernen, installieren Sie mindestens Windows Server 2019. Die 2016er Version ist sehr schlecht darin, mehr als 64 Instanzen der selben Exe zu starten“
* laughs in Linux *
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Lord Delvin
Establishment
Beiträge: 364
Registriert: 05.07.2003, 11:17

Re: Jammer-Thread

Beitrag von Lord Delvin »

Typisches bool literal: "fbol_init"
Benutzeravatar
Krishty
Establishment
Beiträge: 7640
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Scheiß C++; diese Makros werten unterschiedliche Ausdrücke aus:

    define assert(CONDITION) ((CONDITION) || (__builtin_unreachable(), 0))

und

    define assert(CONDITION) (CONDITION)

Das erste wertet auch explicit operator bool() aus, da der ||-Operator auf den Ausdruck angewendet wird. Das zweite wertet nur implizite Bool-Konvertierungen aus.

Lösung ist ein expliziter Cast nach bool im zweiten Ausdruck; zwei Zeilen Erklärung, dass Dinge kaputtgehen wenn man den weglässt; und Niederknien vor der endlosen Weisheit des C++-Kommittees.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Lord Delvin
Establishment
Beiträge: 364
Registriert: 05.07.2003, 11:17

Re: Jammer-Thread

Beitrag von Lord Delvin »

Krishty hat geschrieben:
09.12.2021, 00:23
Lösung ist ein expliziter Cast nach bool im zweiten Ausdruck; zwei Zeilen Erklärung, dass Dinge kaputtgehen wenn man den weglässt; und Niederknien vor der endlosen Weisheit des C++-Kommittees.
Also nachdem ich das gerade die letzten Monate für Tyr gebaut habe, muss ich ganz ehrlich sagen, dass ich verstehe, warum es so ist, wie es ist.
Ich hoffe natürlich, dass meine Lösung besser ist. Gleichzeitig muss ich aber auch sagen, dass es ein Bereich ist, in dem man, durch die prinzipielle Kontextinsensitivität, eine Menge extrem komplexer Interaktionen, die zumindest am Rand meiner mentalen Fähigkeiten sind.
An der Stelle hat man eigentlich nur zwei Optionen. Entweder man versucht da irgendwie einen sehr guten Satz an Standardkonvertierungen zu bieten, hofft dass der Nutzer nur sinnvolle Konvertierungen implementiert *und* baut sehr guten Toolsupport. Oder man verzichtet eben auf implizite Konvertierungen, was dann allerdings bedeutet, dass man sehr viel Compiler- und Sprachdefinitionsmagie einbauen muss, damit die Sprache nicht unerträglich ausführlich zu bedienen ist.

Im speziellen Fall hier wäre natürlich zu erwarten, dass der erwartete Typ von assert bool ist und man deswegen immer denselben Konvertierungspfad für CONDITION bekommt. Allerdings würde ich auch erwarten, dass man Spaß hat, wenn CONDITION selbst operator || definiert :)
Deswegen muss man im Übrigen in Tyr CONDITION mit einem Typ versehen und || wird gebunden, bevor man dann CONDITION einsetzt, selbst wenn es ein Template wäre.
Benutzeravatar
Krishty
Establishment
Beiträge: 7640
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Lord Delvin hat geschrieben:
11.12.2021, 13:28
Allerdings würde ich auch erwarten, dass man Spaß hat, wenn CONDITION selbst operator || definiert :)
Oh die Alpträume!
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 7640
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Wow. Ich habe meinen Setup-Generator Best Setup.exe genannt.

Und nun kann ich ihn nicht mehr in meiner Build-Chain einsetzen.

Weil Windows standardmäßig jedes 32-Bit-Programm, das Setup im Namen hat, als Admin ausführen will. I can’t even

(Letztens ging es noch; vielleicht spielt die Größe der EXE eine Rolle. Oder die Abhängigkeiten von der Visual C++-CRT. Mit einem Manifest kann man das sicher korrigieren, aber muss ich jetzt wirklich für jeden mickrigen Scheiß XML in Linker und Loader schmeißen?!)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Antworten