Linux e kernel do Windows [fechado]

9

Eu trabalho no Linux e um amigo no Windows 7.

Fiquei impressionado com a velocidade que o NetBeans, Eclipse, pgAdmin e outros programas abrem muito, na verdade, MUITO mais rápido no Linux do que no Windows.

Qual é a principal diferença entre o Linux e o kernel do Windows que causa essa diferença de carga de tempo?

Ambas as máquinas têm exatamente a mesma configuração de hardware.

Gerep
fonte
1
Engraçado, minha experiência é exatamente o oposto - em todos os meus PCs, os programas no Windows tendem a carregar muito mais rapidamente do que no Linux (especialmente no Windows 7, que adivinha quais programas você abrirá com base no uso anterior e os pré-carrega na memória ) . Talvez sua máquina Windows esteja cheia de bloatware? O antivírus da empresa é apenas para Windows? Você já tentou executar o Linux na mesma máquina (a falha dos discos rígidos afeta o tempo de carregamento drasticamente) .
BlueRaja - Danny Pflughoeft
@ BlueRaja-DannyPflughoeft Obrigado pelo seu comentário. Como eu disse sobre a questão, ambas as máquinas têm a mesma configuração de hardware, ambos vieram com o Windows 7, mas eu sou um usuário Linux e não, as janelas não está inchado
Gerep
1
@ BlueRaja-DannyPflughoeft Achei interessante que, depois que um antivírus para um Windows é configurado, ele se torna muito mais lento. Portanto, na verdade, não há necessidade de bloatware, basta instalar um antivírus. O GNU / Linux não precisa de um (pelo menos ainda) , e essa pequena coisa deu muito mais desempenho também.
Hi-Angel

Respostas:

8

Esse é apenas o meu palpite, mas acho que, quando você trabalha para uma empresa, onde tudo é compilado (convertido em dados binários, que os computadores podem executar), ninguém pode mais ver o código-fonte, você tende a ficar muito mais preguiçoso, pois não importa , desde que funcione .
O Linux é de código aberto, para que todos possam ver o código-fonte, se desejarem. Se você é preguiçoso e escreve um código de baixa qualidade que realmente desacelera o sistema ou algo do tipo, lá vai a sua reputação, como todo mundo viu. Desenvolvedores e usuários. Eu acho que essa é uma das razões pelas quais os desenvolvedores de software aberto tendem a ser menos preguiçosos.

Também é fato que o núcleo do kernel do Windows nunca foi escrito com a intenção de se tornar o que é hoje (o Linux também não era, mas eles se esforçavam para otimizar os bits antigos), e os desenvolvedores simplesmente sempre adicionavam e adicionavam além disso, até o código ficar tão enigmático que ninguém mais conseguia fazer algo com isso. Duas propriedades do código confuso é que muitas vezes há muita redundância e que você não vê mais os links entre dois trechos de código com tanta facilidade, o que faz com que você nem tente começar a otimizá-lo. Apenas um exemplo (não um enigmático);

for (int i = 0; i < 20; i++)
{
    if (x == y)
    {
        if (z <= u)
        {
            goto banana;
        }
    }
}

O exemplo acima pode ser feito com muito mais eficiência;

for (int i = 0; (i < 20) && (x == y) && (z <= u); i++)
{
    banana ();
}
RobinJ
fonte
1
Acredito que na área de programadores, o consenso atual é que a codificação lenta e / ou desleixada é bem otimizada nos compiladores. No entanto, os compiladores não podem ajudar a inchar e herdar, o que pode estar lá - e relacionado à sua intenção.
Chris K
4
Ambos os exemplos de código quase certamente irá compilar a mesma coisa (menos a função de chamada vs. Goto) ...
BlueRaja - Danny Pflughoeft
@ BlueRaja-DannyPflughoeft Eu sei, mas eu precisava de um exemplo simples para explicá-lo.
RobinJ
5

Outro grande problema ainda não mencionado é que o Linux possui melhores sistemas de arquivos. O desempenho do NTFS com arquivos pequenos não é tão bom - ext3 é melhor e ext4 é muito, muito melhor. Há algumas especulações interessantes sobre o porquê em outra pergunta .

Quando você abre um programa, uma quantidade significativa do tempo de inicialização está carregando um monte de arquivos minúsculos do disco, portanto, é muito importante ter um sistema de arquivos que faça isso rapidamente.

Brendan Long
fonte
4

Esta é apenas a minha opinião, mas acho que existem várias razões para os sistemas GNU / Linux serem mais rápidos que o Windows e nem todos estão relacionados ao kernel:

  • Obviamente, há o motivo explicado por RobinJ, é bastante óbvio que, se o software é de código aberto, o código tende a ser escrito com mais eficiência
  • O Linux utiliza componentes muito otimizados, por exemplo, usa um agendador muito otimizado que tende a maximizar a utilização da CPU.
  • Os sistemas Linux sofrem menos com a fragmentação da memória
  • Os sistemas Linux têm um melhor uso da memória principal e geralmente tendem a usar massivamente o cache, enquanto os sistemas Windows tendem a usar massivamente a memória virtual
  • O kernel do Linux é atualizado continuamente e as partes inúteis geralmente são removidas, embora Linus Torvalds tenha dito que o kernel do Linux está ficando "enorme e inchado", enquanto as atualizações de oposição ao kernel do NT geralmente são construídas sobre as existentes.
Onyris
fonte
3

Eu acredito que o núcleo sozinho não é a resposta. O Windows 7 é a primeira vez que o Windows foi responsivo o suficiente para que eu considere aceitável.

Acredito que mais do diferencial de velocidade esteja relacionado aos pensamentos de @ RobinJ sobre engenharia de software. Tudo * no Windows é criado no MSDN por meio de algum tipo de estrutura da Microsoft ou de outra. Na verdade, isso está relacionado a como o Big Business ama a Microsoft; A Microsoft tem tudo a ver com ajudar diferentes programas / suítes / tecnologias a se comunicarem.

Em seguida ... para tornar mais fácil para os desenvolvedores cobrir o essencial (e não reinventar a roda), a Microsoft permite que os fabricantes agrupem e / ou exijam bibliotecas pré-compiladas como o Microsoft Visual C ++ 2008 Redistributable. Ou .Net4.0, MSSQL 2005, ad nauseum. Há algo como dez anos em pacotes que os desenvolvedores podem usar e desenvolver e exigem que os usuários finais instalem em seus computadores Windows para usar o novo software.

Portanto, para que o programa Zyzzyx carregue e execute, uma ou mais bibliotecas redistribuíveis do MSDN precisam estar presentes e em execução. Essas bibliotecas determinam como os programas interagem com o sistema operacional.

Para resumir, eu diria que a compatibilidade intencional do Windows por décadas de software o torna inchado e, ocasionalmente, mais lento que um sistema linux comparável. Observe também que desenvolvi software visual para Windows, mas não para Linux ... não GTK, Qt, Py, nada, então minhas suposições sobre o Linux menos inchado são exatamente isso.

editado para adicionar: além disso, o software FOSS tem pessoas que o aprimoram o tempo todo, de modo que o GTK melhora com o passar do tempo, em vez de o GTK-2005 e o GTK-2008 estarem no mesmo computador, enquanto a Microsoft faz isso o tempo todo.

* - ok, há exceções, tenho certeza.

Chris K
fonte