Kernel Linux e Windows [chiuso]


9

Lavoro su Linux e un amico su Windows 7.

Sono rimasto sorpreso dalla velocità con cui NetBeans, Eclipse, pgAdmin e altri programmi aprono molto, molto, MOLTO più velocemente su Linux che su Windows.

Qual è la differenza principale tra Linux e il kernel di Windows che causa quella differenza di carico temporale?

Entrambe le macchine hanno esattamente la stessa configurazione hardware.


1
Divertente, la mia esperienza è esattamente l'opposto: su tutti i miei PC, i programmi in Windows tendono a caricarsi molto più velocemente rispetto a Linux (specialmente sotto Windows 7, che indovina quali programmi aprirai in base all'utilizzo passato e li precarica in memoria ) . Forse la sua macchina Windows è piena di bloatware? L'antivirus dell'azienda è solo per Windows? Hai provato a eseguire Linux sulla stessa macchina (i dischi rigidi in errore influiscono drasticamente sui tempi di caricamento) .
BlueRaja - Danny Pflughoeft il

@ BlueRaja-DannyPflughoeft grazie per il tuo commento. Come ho detto alla domanda, entrambe le macchine hanno la stessa configurazione hardware, entrambe sono dotate di Windows 7 ma io sono un utente Linux e no, le sue finestre non sono gonfie
Gerep,

1
@ BlueRaja-DannyPflughoeft Ho trovato una cosa interessante che dopo che è stato impostato un antivirus per Windows, diventa molto più lento. Quindi, in realtà, non è necessario in un bloatware, basta installare un antivirus. GNU / Linux non ne ha bisogno (almeno per ora) , e questa piccola cosa ha dato anche molte più prestazioni.
Ciao Angelo

Risposte:


8

Questa è solo la mia ipotesi, ma penso che quando lavori per un'azienda, dove una volta compilato tutto (convertito in dati binari, che i computer possono eseguire), nessuno può più vedere il codice sorgente, tendi ad essere molto più pigro, poiché non importa finché funziona .
Linux è open source, quindi tutti possono vedere il codice sorgente se lo desiderano. Se sei pigro e scrivi un pezzo di codice davvero scadente che rallenterà davvero il sistema o qualcosa del genere, la tua reputazione andrà bene, come hanno appena visto tutti. Sviluppatori e utenti simili. Penso che sia uno dei motivi per cui gli sviluppatori di open souyce tendono ad essere meno pigri.

È anche un dato di fatto che il nucleo del kernel di Windows non è mai stato scritto con l'intenzione di diventare quello che è oggi (né lo era Linux ', ma hanno fatto lo sforzo di ottimizzare i vecchi bit), e gli sviluppatori hanno semplicemente aggiunto e aggiunto inoltre, fino a quando il codice non era così criptico che nessuno poteva più ricavarne qualcosa. Due proprietà del codice disordinato sono che spesso c'è molta ridondanza e che non si vedono più i collegamenti tra due parti di codice così facilmente, il che rende impossibile provare nemmeno a iniziare a ottimizzarlo. Solo un esempio (non criptico);

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

L'esempio sopra potrebbe essere fatto in modo molto più efficiente;

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

1
Credo nell'area dei programmatori, l'attuale consenso è che la codifica lazy e / o sciatta sia ben ottimizzata nei compilatori. Tuttavia, i compilatori non possono aiutare a gonfiare e legacy, che potrebbero essere lì - e in relazione al tuo intento.
Chris K,

4
Entrambi questi esempi di codice quasi sicuramente si compileranno nella stessa cosa (meno la funzione-chiamata vs. goto) ...
BlueRaja - Danny Pflughoeft

@ BlueRaja-DannyPflughoeft Lo so, ma avevo bisogno di un semplice esempio per spiegarlo.
RobinJ,

5

Un altro grande non ancora menzionato è che Linux ha filesystem migliori. Le prestazioni di NTFS con file di piccole dimensioni non sono eccezionali: ext3 è migliore e ext4 è molto, molto meglio. Ci sono alcune speculazioni interessanti sul perché in un'altra domanda .

Quando apri un programma, una quantità significativa del tempo di avvio sta caricando un sacco di piccoli file dal disco, quindi avere un filesystem che lo fa rapidamente è molto importante.


4

Questa è solo la mia opinione, ma penso che ci siano varie ragioni per cui i sistemi GNU / Linux sono più veloci di Windows e non tutti sono legati al kernel:

  • Ovviamente c'è il motivo spiegato da RobinJ, è abbastanza ovvio che se il software è open source il codice tende ad essere scritto in modo più efficiente
  • Linux utilizza componenti molto ottimizzati, ad esempio utilizza uno scheduler molto ottimizzato che tende a massimizzare l'utilizzo della CPU.
  • I sistemi Linux soffrono meno della frammentazione della memoria
  • I sistemi Linux hanno un uso migliore della memoria principale e di solito tendono a utilizzare in modo massiccio la cache, i sistemi Windows invece tendono a utilizzare in modo massiccio la memoria virtuale
  • Il kernel di Linux viene continuamente aggiornato e le parti inutili vengono solitamente rimosse, sebbene Linus Torvalds affermi che il kernel di Linux sta diventando "enorme e gonfio", in opposizione agli aggiornamenti del kernel NT di solito sono costruiti su quelli esistenti.

3

Credo che il kernel da solo non sia la risposta. Windows 7 è la prima volta che Windows è stato abbastanza reattivo da considerarlo accettabile.

Credo che una maggiore parte del differenziale di velocità sia legato ai pensieri di @ RobinJ sull'ingegneria del software. Tutto * in Windows è basato su MSDN tramite un tipo di framework Microsoft o un altro. Questo è in realtà legato al modo in cui Big Business ama Microsoft; Microsoft si occupa di aiutare diversi programmi / suite / tecnologie a dialogare.

Successivamente ... per rendere più semplice per gli sviluppatori avere gli elementi essenziali coperti (e non reinventare la ruota) Microsoft consente ai produttori di raggruppare e / o richiedere librerie precompilate come Microsoft Visual C ++ 2008 ridistribuibile. Oppure .Net4.0, MSSQL 2005, fino alla nausea. Esistono circa dieci anni di pacchetti che gli sviluppatori possono utilizzare e sviluppare e richiedono agli utenti finali di installare sui propri computer Windows per utilizzare il nuovo software.

Pertanto, affinché il programma Zyzzyx venga caricato ed eseguito, una o più librerie ridistribuibili MSDN devono essere presenti e in esecuzione. Queste librerie determinano il modo in cui i programmi interagiscono con il sistema operativo.

Per farla breve, vorrei affermare che la compatibilità intenzionale di Window attraverso decenni di software lo rende gonfio e talvolta più lento di un sistema Linux comparabile. Nota anche che ho sviluppato un software visivo per Windows ma non per Linux ... non GTK, Qt, Py, qualsiasi cosa, quindi i miei presupposti sul fatto che Linux sia meno gonfio sono proprio questo.

modificato per aggiungere: inoltre, il software FOSS ha persone che lo migliorano continuamente, quindi GTK migliorerà col passare del tempo piuttosto che GTK-2005 e GTK-2008 si trovano sullo stesso computer, mentre Microsoft lo fa sempre.

* - ok ci sono delle eccezioni, ne sono sicuro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.