J'ai été étonné de la vitesse à laquelle NetBeans, Eclipse, pgAdmin et d'autres programmes ouvrent beaucoup, vraiment, beaucoup plus vite sur Linux que sur Windows.
Quelle est la principale différence entre Linux et le noyau Windows qui provoque cette différence de charge temporelle?
Les deux machines ont exactement la même configuration matérielle.
Drôle, mon expérience est exactement le contraire - sur tous mes PC, les programmes sous Windows ont tendance à se charger beaucoup plus rapidement que sous Linux (en particulier sous Windows 7, qui devine quels programmes vous ouvrirez en fonction de votre utilisation passée, et les précharge en mémoire ) . Peut-être que sa machine Windows est pleine de bloatware? L'entreprise est-elle uniquement antivirus pour Windows? Avez-vous essayé d'exécuter Linux sur la même machine (les disques durs défaillants affectent considérablement les temps de chargement) .
BlueRaja - Danny Pflughoeft
@ BlueRaja-DannyPflughoeft merci pour votre commentaire. Comme je l'ai dit sur la question, les deux machines ont la même configuration matérielle, les deux sont
livrées
1
@ BlueRaja-DannyPflughoeft J'ai trouvé une chose intéressante qu'après la mise en place d'un antivirus pour Windows, il devient beaucoup plus lent. Donc, en fait, pas besoin d'un bloatware, installez simplement un antivirus. Le GNU / Linux n'en a pas besoin (du moins pour le moment) , et cette petite chose a également donné beaucoup plus de performances.
Hi-Angel du
Réponses:
8
C'est juste ma supposition, mais je pense que lorsque vous travaillez pour une entreprise, où une fois que tout est compilé (converti en données binaires, que les ordinateurs peuvent exécuter), personne ne peut plus voir le code source, vous avez tendance à être beaucoup plus paresseux, car cela n'a pas d'importance tant qu'il fonctionne .
Linux est open source, donc tout le monde peut voir le code source s'il le souhaite. Si vous êtes paresseux et que vous écrivez un morceau de code vraiment merdique qui va vraiment ralentir le système ou quelque chose du genre, là va votre réputation, comme tout le monde vient de le voir. Développeurs et utilisateurs. Je pense que c'est l'une des raisons pour lesquelles les développeurs open souyce ont tendance à être moins paresseux.
C'est aussi un fait que le noyau du noyau Windows n'a jamais été écrit avec l'intention de devenir ce qu'il est aujourd'hui (ni Linux, mais ils ont fait l'effort d'optimiser les anciens bits), et les développeurs ont simplement toujours ajouté et ajouté en plus, jusqu'à ce que le code soit si crypté que personne ne puisse plus en faire quelque chose. Deux propriétés du code désordonné est qu'il y a souvent beaucoup de redondance et que vous ne voyez plus les liens entre deux morceaux de code plus facilement, ce qui fait que vous ne pouvez même pas essayer de commencer à l'optimiser. Juste un exemple (pas cryptique);
for (int i = 0; i < 20; i++)
{
if (x == y)
{
if (z <= u)
{
goto banana;
}
}
}
L'exemple ci-dessus pourrait être fait beaucoup plus efficacement;
for (int i = 0; (i < 20) && (x == y) && (z <= u); i++)
{
banana ();
}
Je crois que dans le domaine des programmeurs, le consensus actuel est que le codage paresseux et / ou bâclé est bien optimisé dans les compilateurs. Cependant, les compilateurs ne peuvent pas empêcher les ballonnements et l'héritage, qui pourraient être là - et liés à votre intention.
Chris K
4
Ces deux exemples de code seront presque certainement compilés pour la même chose (moins l'appel de fonction vs goto) ...
BlueRaja - Danny Pflughoeft
@ BlueRaja-DannyPflughoeft Je sais, mais j'avais besoin d'un exemple simple pour l'expliquer.
RobinJ
5
Un autre gros problème non mentionné est que Linux a de meilleurs systèmes de fichiers. Les performances de NTFS avec de petits fichiers ne sont pas excellentes - ext3 est meilleur et ext4 est bien meilleur. Il y a des spéculations intéressantes sur pourquoi dans une autre question .
Lorsque vous ouvrez un programme, une grande partie du temps de démarrage charge un tas de minuscules fichiers à partir du disque, il est donc très important d'avoir un système de fichiers qui le fasse rapidement.
C'est juste mon opinion mais je pense qu'il y a plusieurs raisons pour lesquelles les systèmes GNU / Linux sont plus rapides que Windows et tous ne sont pas liés au noyau:
Évidemment, il y a la raison expliquée par RobinJ, il est assez évident que si le logiciel est open source, le code a tendance à être écrit plus efficacement
Linux utilise des composants très optimisés, par exemple, il utilise un planificateur très optimisé qui tend à maximiser l'utilisation du processeur.
Les systèmes Linux souffrent moins de la fragmentation de la mémoire
Les systèmes Linux ont une meilleure utilisation de la mémoire principale et ont généralement tendance à utiliser massivement le cache, les systèmes Windows ont plutôt tendance à utiliser massivement la mémoire virtuelle
Le noyau Linux est continuellement mis à jour et les parties inutiles sont généralement supprimées, bien que Linus Torvalds ait déclaré que le noyau Linux devenait "énorme et gonflé", en opposition les mises à jour du noyau NT sont généralement construites au-dessus des existantes.
Je crois que le noyau seul n'est pas la réponse. Windows 7 est la première fois que Windows était suffisamment réactif pour que je considère qu'il soit acceptable.
Je crois qu'une plus grande partie du différentiel de vitesse est liée aux réflexions de @ RobinJ sur l'ingénierie logicielle. Tout * dans Windows est construit sur le MSDN via une sorte de framework Microsoft ou autre. Cela est en fait lié à la façon dont les grandes entreprises aiment Microsoft; Microsoft vise à aider les différents programmes / suites / technologies à communiquer entre eux.
Suivant ... pour permettre aux développeurs de couvrir l'essentiel (et non de réinventer la roue), Microsoft permet aux fabricants de regrouper et / ou d'exiger des bibliothèques précompilées comme Microsoft Visual C ++ 2008 Redistributable. Ou .Net4.0, MSSQL 2005, ad nauseum. Il y a quelque chose comme dix ans de packages que les développeurs peuvent utiliser et développer et obliger les utilisateurs finaux à installer sur leurs ordinateurs Windows afin d'utiliser le nouveau logiciel.
Ainsi, pour que le programme Zyzzyx se charge et s'exécute, une ou plusieurs bibliothèques MSDN redistribuables doivent être présentes et en cours d'exécution. Ces bibliothèques déterminent comment les programmes interagissent avec le système d'exploitation.
Pour résumer, je dirais que la compatibilité intentionnelle de Windows à travers des décennies de logiciels le rend gonflé et parfois plus lent qu'un système Linux comparable. Notez également que j'ai développé un logiciel visuel pour Windows mais pas pour Linux ... pas GTK, Qt, Py, quoi que ce soit, donc mes hypothèses sur Linux étant moins gonflé ne sont que cela.
modifié pour ajouter: en outre, le logiciel FOSS a des gens qui l'améliorent tout le temps, donc GTK s'améliorera au fil du temps plutôt que GTK-2005 et GTK-2008 sur le même ordinateur, tandis que Microsoft le fait tout le temps.
Réponses:
C'est juste ma supposition, mais je pense que lorsque vous travaillez pour une entreprise, où une fois que tout est compilé (converti en données binaires, que les ordinateurs peuvent exécuter), personne ne peut plus voir le code source, vous avez tendance à être beaucoup plus paresseux, car cela n'a pas d'importance tant qu'il fonctionne .
Linux est open source, donc tout le monde peut voir le code source s'il le souhaite. Si vous êtes paresseux et que vous écrivez un morceau de code vraiment merdique qui va vraiment ralentir le système ou quelque chose du genre, là va votre réputation, comme tout le monde vient de le voir. Développeurs et utilisateurs. Je pense que c'est l'une des raisons pour lesquelles les développeurs open souyce ont tendance à être moins paresseux.
C'est aussi un fait que le noyau du noyau Windows n'a jamais été écrit avec l'intention de devenir ce qu'il est aujourd'hui (ni Linux, mais ils ont fait l'effort d'optimiser les anciens bits), et les développeurs ont simplement toujours ajouté et ajouté en plus, jusqu'à ce que le code soit si crypté que personne ne puisse plus en faire quelque chose. Deux propriétés du code désordonné est qu'il y a souvent beaucoup de redondance et que vous ne voyez plus les liens entre deux morceaux de code plus facilement, ce qui fait que vous ne pouvez même pas essayer de commencer à l'optimiser. Juste un exemple (pas cryptique);
L'exemple ci-dessus pourrait être fait beaucoup plus efficacement;
la source
Un autre gros problème non mentionné est que Linux a de meilleurs systèmes de fichiers. Les performances de NTFS avec de petits fichiers ne sont pas excellentes - ext3 est meilleur et ext4 est bien meilleur. Il y a des spéculations intéressantes sur pourquoi dans une autre question .
Lorsque vous ouvrez un programme, une grande partie du temps de démarrage charge un tas de minuscules fichiers à partir du disque, il est donc très important d'avoir un système de fichiers qui le fasse rapidement.
la source
C'est juste mon opinion mais je pense qu'il y a plusieurs raisons pour lesquelles les systèmes GNU / Linux sont plus rapides que Windows et tous ne sont pas liés au noyau:
la source
Je crois que le noyau seul n'est pas la réponse. Windows 7 est la première fois que Windows était suffisamment réactif pour que je considère qu'il soit acceptable.
Je crois qu'une plus grande partie du différentiel de vitesse est liée aux réflexions de @ RobinJ sur l'ingénierie logicielle. Tout * dans Windows est construit sur le MSDN via une sorte de framework Microsoft ou autre. Cela est en fait lié à la façon dont les grandes entreprises aiment Microsoft; Microsoft vise à aider les différents programmes / suites / technologies à communiquer entre eux.
Suivant ... pour permettre aux développeurs de couvrir l'essentiel (et non de réinventer la roue), Microsoft permet aux fabricants de regrouper et / ou d'exiger des bibliothèques précompilées comme Microsoft Visual C ++ 2008 Redistributable. Ou .Net4.0, MSSQL 2005, ad nauseum. Il y a quelque chose comme dix ans de packages que les développeurs peuvent utiliser et développer et obliger les utilisateurs finaux à installer sur leurs ordinateurs Windows afin d'utiliser le nouveau logiciel.
Ainsi, pour que le programme Zyzzyx se charge et s'exécute, une ou plusieurs bibliothèques MSDN redistribuables doivent être présentes et en cours d'exécution. Ces bibliothèques déterminent comment les programmes interagissent avec le système d'exploitation.
Pour résumer, je dirais que la compatibilité intentionnelle de Windows à travers des décennies de logiciels le rend gonflé et parfois plus lent qu'un système Linux comparable. Notez également que j'ai développé un logiciel visuel pour Windows mais pas pour Linux ... pas GTK, Qt, Py, quoi que ce soit, donc mes hypothèses sur Linux étant moins gonflé ne sont que cela.
modifié pour ajouter: en outre, le logiciel FOSS a des gens qui l'améliorent tout le temps, donc GTK s'améliorera au fil du temps plutôt que GTK-2005 et GTK-2008 sur le même ordinateur, tandis que Microsoft le fait tout le temps.
* - ok il y a des exceptions, j'en suis sûr.
la source