Pourquoi Linux semble-t-il tellement plus rapide que Windows ?


En une coquille de noix - philosophie d'exploitation.

  • Windows et les programmes Windows sont à source fermée. Seuls les propriétaires et les développeurs des programmes ont accès au code source, de sorte que l'audience de l'examen par les pairs est très réduite. Les programmeurs peuvent s'en tirer avec des techniques douteuses et des kludges parce que peu de gens le sauront ou le discuteront.

    Les programmes Linux sont open source - n'importe qui peut télécharger le code source du programme et le parcourir .... et de nombreuses personnes très intelligentes le font. Si les développeurs des programmes ont pris des raccourcis douteux ou ont truqué quelque chose, quelqu'un le remarquera et soit le corrigera et le fera savoir aux développeurs, soit le mettra à la disposition de quelqu'un d'autre ayant cette expertise particulière pour l'examiner.

  • De nombreux programmes Windows incluent d'énormes bibliothèques d'exécution basées sur la philosophie selon laquelle tout ce qui est nécessaire pour faire fonctionner le programme doit être livré avec le paquet d'installation puisque Microsoft peut (et fait) changer le code Windows sans préavis, ce qui peut casser les programmes utilisant des appels à ce code. L'optimisation du code coûte du temps (lire de l'argent pour les produits à source fermée) donc si quelque chose semble fonctionner et que les gens l'achètent - laissez-le tranquille.

    Les bibliothèques d'exécution de Linux sont généralement petites et efficaces et très souvent les bibliothèques dont un programme a besoin sont déjà chargées en mémoire par un autre programme. De plus, le code de programme Linux a tendance à être nettement plus petit que le code de programme Windows - encore une fois, la philosophie de programmation. Puisque les programmeurs savent que leur code a un énorme public de pairs, c'est une question de fierté d'optimiser leur code - s'ils ne le font pas, quelqu'un d'autre le fera, ce qui entraîne une perte de visage et de crédibilité.

  • Tout ce qui fonctionne dans Windows a besoin de Windows. Vous avez votre code noyau et d'innombrables bibliothèques système toutes interdépendantes constituant votre interface graphique. Dans Windows, votre gestionnaire de fenêtres est votre système d'exploitation et chaque programme avec une interface utilisateur graphique doit interagir avec ce gestionnaire de fenêtres.

    Linux offre une vaste variété de gestionnaires de fenêtres pour votre interface graphique (Gnome, KDE, XFCE etc. etc.) ou vous pouvez choisir de fonctionner à partir de la ligne de commande et ne pas charger de gestionnaire de fenêtres du tout. Les programmes d'interface graphique de Linux peuvent utiliser de nombreux moyens différents pour afficher leurs marchandises (XWindows, gtkxx, QTxx, etc.), de sorte que les programmeurs peuvent choisir le moyen le plus rapide pour répondre à leurs besoins. Linux vous permet même de lancer un programme GUI lorsqu'il fonctionne en mode texte sans la surcharge d'un gestionnaire de fenêtres complet.

  • Le système de fichiers. Windows FAT32 et NTFS sont très inefficaces dans la façon dont ils stockent, cataloguent et récupèrent les morceaux de fichiers. Pour aggraver les choses, Windows utilise un grand fichier pour le swapping du code hors de la mémoire et la philosophie d'exploitation de Windows tend vers le chargement de tout ce qui peut ou non être nécessaire dans la mémoire et ensuite swap bits hors lorsque quelque chose d'autre est nécessaire. Très lent ...
    Les systèmes de fichiers modernes de Linux (ext4, ext3, reiser etc) sont très efficaces avec un accès rapide aux fichiers. Linux utilise une partition séparée comme espace de swap, indépendamment du système de fichiers que vous choisissez d'utiliser. Linux ne charge que les processus nécessaires à ce qui est en cours d'exécution. Par exemple, en ce moment, j'ai une VM Linux (Xubuntu 16.04) et une VM Windows 7 en cours d'exécution sur cet ordinateur portable (qui utilise Xubuntu 15.10 comme système d'exploitation principal), toutes deux avec 4 Go de mémoire allouée. La VM Windows n'a que Windows en cours d'exécution et indique 6 Mo libres - toute autre mémoire est utilisée ou mise en cache. La VM Linux a un navigateur Chrome et Firefox en cours d'exécution plus plusieurs fenêtres de terminal, un programme Windows hérité (SQLyog exécuté dans Wine), deux instances de l'éditeur de programmation Sublime Text et plusieurs connexions sshfs en cours d'exécution et rapporte 2399 Mo de mémoire libre sans rien échanger.

Alors, vous l'avez - philosophie d'exploitation et base de code. Windows et ses programmes ne sont pas connus sous le nom de "bloatware" pour rien. Tout ce qui est chargé prend du temps à charger et des ressources à gérer. Si vous chargez des tas de choses, nécessaires ou non, et que votre système de gestion des ressources est merdique, vos performances le sont aussi. Oui, c'est vrai - Windows est plus performant avec la plupart des jeux où d'énormes efforts ont été faits pour tirer le meilleur du matériel de la carte graphique malgré tous les obstacles que le système d'exploitation présente, mais ce n'est qu'un très petit domaine d'utilisation spéciale. Faire quelque chose de productif sous Windows (pas jouer à des jeux 🙂 est une tâche ingrate. Au fil du temps, les programmes Windows sont devenus énormes parce que la philosophie est de tout mettre, y compris l'évier de cuisine, de ne pas prendre la peine d'éliminer le vieux code et de continuer à en ajouter. Il y a eu des exemples de cela dans Linux (par exemple Cinnamon wm) mais tout cela ne dure pas longtemps et vous avez toujours le choix d'utiliser autre chose. Malheureusement, la philosophie de Windows dicte que toute la mémoire doit être remplie quoi qu'il en soit et comme la mémoire moyenne du système augmente, la taille des programmes augmente pour la remplir.
À l'époque du Z80, j'ai écrit des programmes assez sophistiqués avec seulement 16 kbytes de mémoire totale disponible. OK, les programmes étaient écrits en code assembleur et chaque registre et emplacement mémoire devait être comptabilisé, mais il était possible de faire de grandes choses avec très peu. Linux a tendance à suivre cette philosophie plus ancienne.