Die Schwierigkeit dabei ist auf die Tatsache zurückzuführen, dass C ++ dazu neigt, sich selbst und den Kompilierungsprozess auf viele kleine, individuelle Dateien zu verteilen. Das ist etwas, was Linux gut kann und Windows nicht. Wenn Sie einen wirklich schnellen C ++ - Compiler für Windows erstellen möchten, versuchen Sie, alles im RAM zu belassen und das Dateisystem so wenig wie möglich zu berühren.
Auf diese Weise können Sie auch eine schnellere Linux C ++ - Kompilierungskette erstellen. Unter Linux ist dies jedoch weniger wichtig, da das Dateisystem bereits einen Großteil dieser Optimierung für Sie vornimmt.
Der Grund dafür liegt in der Unix-Kultur: In der Vergangenheit hatte die Leistung von Dateisystemen in der Unix-Welt eine viel höhere Priorität als in Windows. Um nicht zu sagen, dass es unter Windows keine Priorität hatte, nur dass es unter Unix eine höhere Priorität hatte.
Zugriff auf den Quellcode.
Sie können nicht ändern, was Sie nicht kontrollieren können. Der fehlende Zugriff auf Windows NTFS-Quellcode bedeutet, dass die meisten Anstrengungen zur Verbesserung der Leistung durch Hardwareverbesserungen unternommen wurden. Wenn die Leistung langsam ist, können Sie das Problem umgehen, indem Sie die Hardware verbessern: den Bus, das Speichermedium usw. Sie können nur so viel tun, wenn Sie das Problem umgehen und nicht beheben müssen.
Der Zugriff auf Unix-Quellcode (noch vor Open Source) war weiter verbreitet. Wenn Sie also die Leistung verbessern möchten, sollten Sie dies zuerst in Software (billiger und einfacher) und dann in Hardware behandeln.
Infolgedessen haben viele Menschen auf der Welt promoviert, indem sie das Unix-Dateisystem studiert und neue Wege gefunden haben, um die Leistung zu verbessern.
Unix tendiert zu vielen kleinen Dateien. Windows tendiert zu wenigen (oder einer einzelnen) großen Datei.
Unix-Anwendungen verarbeiten in der Regel viele kleine Dateien. Stellen Sie sich eine Softwareentwicklungsumgebung vor: viele kleine Quelldateien, jede mit ihrem eigenen Zweck. In der letzten Phase (Verknüpfung) wird zwar eine große Datei erstellt, dies ist jedoch ein kleiner Prozentsatz.
Infolgedessen verfügt Unix über hochoptimierte Systemaufrufe zum Öffnen und Schließen von Dateien, Scannen von Verzeichnissen usw. Die Geschichte der Unix-Forschungsarbeiten umfasst Jahrzehnte von Dateisystemoptimierungen, bei denen viel über die Verbesserung des Verzeichniszugriffs (Lookups und vollständige Verzeichnisscans), das erstmalige Öffnen von Dateien usw. nachgedacht wurde.
Windows-Anwendungen neigen dazu, eine große Datei zu öffnen, sie lange offen zu halten und sie dann zu schließen. Denken Sie an MS-Word. msword.exe (oder was auch immer) öffnet die Datei einmal und hängt sie stundenlang an, aktualisiert interne Blöcke und so weiter. Der Wert der Optimierung des Öffnens der Datei wäre Zeitverschwendung.
In der Geschichte des Windows-Benchmarking und der Windows-Optimierung ging es darum, wie schnell man lange Dateien lesen oder schreiben kann. Das wird optimiert.
Leider hat die Softwareentwicklung in Richtung der ersten Situation tendiert. Heck, das beste Textverarbeitungssystem für Unix (TeX / LaTeX) empfiehlt Ihnen, jedes Kapitel in eine andere Datei zu legen und alle zusammen einzuschließen.
Unix konzentriert sich auf hohe Leistung; Windows konzentriert sich auf die Benutzererfahrung
Unix wurde im Serverraum gestartet: keine Benutzeroberfläche. Das einzige, was Benutzer sehen, ist Geschwindigkeit. Geschwindigkeit hat daher Priorität.
Windows wurde auf dem Desktop gestartet: Benutzer kümmern sich nur um das, was sie sehen, und sie sehen die Benutzeroberfläche. Daher wird mehr Energie für die Verbesserung der Benutzeroberfläche aufgewendet als für die Leistung.
Das Windows-Ökosystem hängt von der geplanten Veralterung ab. Warum Software optimieren, wenn neue Hardware nur ein oder zwei Jahre entfernt ist?
Ich glaube nicht an Verschwörungstheorien, aber wenn ich das tun würde, würde ich darauf hinweisen, dass es in der Windows-Kultur weniger Anreize gibt, die Leistung zu verbessern. Windows-Geschäftsmodelle hängen davon ab, dass Menschen neue Maschinen wie ein Uhrwerk kaufen. (Aus diesem Grund ist der Aktienkurs von Tausenden von Unternehmen betroffen, wenn MS ein Betriebssystem verspätet ausliefert oder wenn Intel ein Veröffentlichungsdatum für Chips verpasst.) Dies bedeutet, dass es einen Anreiz gibt, Leistungsprobleme zu lösen, indem die Leute aufgefordert werden, neue Hardware zu kaufen. nicht durch die Verbesserung des eigentlichen Problems: langsame Betriebssysteme. Unix kommt aus dem akademischen Bereich, wo das Budget knapp ist und Sie promovieren können, indem Sie eine neue Methode erfinden, um Dateisysteme schneller zu machen. Selten erhält jemand in der Wissenschaft Punkte für die Lösung eines Problems durch Erteilung einer Bestellung.
Da Unix Open Source ist (auch wenn dies nicht der Fall war, hatte jeder Zugriff auf die Quelle), kann jeder gelangweilte Doktorand den Code lesen und berühmt werden, indem er ihn verbessert. Dies ist in Windows nicht der Fall (MS verfügt über ein Programm, mit dem Akademiker auf Windows-Quellcode zugreifen können, das nur selten genutzt wird). Schauen Sie sich diese Auswahl von Unix-bezogenen Performance-Papieren an: http://www.eecs.harvard.edu/margo/papers/ oder schauen Sie sich die Geschichte der Papiere von Osterhaus, Henry Spencer oder anderen an. Heck, eine der größten (und erfreulichsten) Debatten in der Unix-Geschichte war das Hin und Her zwischen Osterhaus und Selzer http://www.eecs.harvard.edu/margo/papers/usenix95-lfs/supplement/rebuttal. html
In der Windows-Welt sieht man so etwas nicht. Möglicherweise sehen Sie Anbieter, die sich gegenseitig verbessern, aber das scheint in letzter Zeit viel seltener zu sein, da die Innovation anscheinend alle auf der Ebene der Standardkörper liegt.
So sehe ich das.