Linux y kernel de Windows [cerrado]

9

Trabajo en Linux y un amigo en Windows 7.

Me sorprendió la velocidad con la que NetBeans, Eclipse, pgAdmin y otros programas abren mucho, realmente, MUCHO más rápido en Linux que en Windows.

¿Cuál es la principal diferencia entre Linux y el kernel de Windows que causa esa diferencia de carga de tiempo?

Ambas máquinas tienen exactamente la misma configuración de hardware.

Gerep
fuente
1
Es curioso, mi experiencia es exactamente lo contrario: en todas mis PC, los programas en Windows tienden a cargarse mucho más rápido que en Linux (especialmente en Windows 7, que adivina qué programas abrirá en función del uso anterior y los precarga en la memoria ) . ¿Quizás su máquina Windows está llena de bloatware? ¿El antivirus de la compañía es solo para Windows? ¿Ha intentado ejecutar Linux en la misma máquina (no discos duros afectan drásticamente los tiempos de carga) .
BlueRaja - Danny Pflughoeft
@ BlueRaja-DannyPflughoeft gracias por tu comentario. Como dije en la pregunta, ambas máquinas tienen la misma configuración de hardware, ambas venían con Windows 7 pero soy un usuario de Linux y no, su Windows no está hinchado
Gerep
1
@ BlueRaja-DannyPflughoeft Encontré algo interesante que después de configurar un antivirus para Windows, se vuelve mucho más lento. Entonces, de hecho, no necesita un bloatware, solo instale un antivirus. El GNU / Linux no necesita uno (al menos todavía) , y esta pequeña cosa también dio mucho más rendimiento.
Hola Ángel

Respuestas:

8

Esto es solo mi suposición, pero creo que cuando trabajas para una empresa, donde una vez que todo está compilado (convertido a datos binarios, que las computadoras pueden ejecutar), ya nadie puede ver el código fuente, tiendes a ser mucho más vago, ya que no importa mientras funcione .
Linux es de código abierto, por lo que todos pueden ver el código fuente si así lo desean. Si eres perezoso y escribes un código realmente malo que realmente ralentizará el sistema o algo por el estilo, ahí va tu reputación, como todo el mundo acaba de ver. Desarrolladores y usuarios por igual. Creo que esa es una de las razones por las cuales los desarrolladores de open souyce tienden a ser menos flojos.

También es un hecho que el núcleo del núcleo de Windows nunca se escribió con la intención de convertirse en lo que es hoy (tampoco lo fue Linux ', pero hicieron el esfuerzo de optimizar los bits antiguos), y los desarrolladores simplemente siempre han estado agregando y agregando además, hasta que el código fue tan críptico que ya nadie pudo sacarle provecho. Dos propiedades del código desordenado es que a menudo hay mucha redundancia, y que ya no ves los enlaces entre dos partes de código tan fácilmente, lo que hace que ni siquiera puedas intentar comenzar a optimizarlo. Solo un ejemplo (no críptico);

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

El ejemplo anterior podría hacerse mucho más eficientemente;

for (int i = 0; (i < 20) && (x == y) && (z <= u); i++)
{
    banana ();
}
RobinJ
fuente
1
Creo que en el área de programadores, el consenso actual es que la codificación perezosa y / o descuidada está bien optimizada en los compiladores. Sin embargo, los compiladores no pueden evitar la hinchazón y el legado, que podrían estar allí, y relacionados con su intención.
Chris K
44
Es casi seguro que ambos ejemplos de código se compilarán de la misma manera (menos la función llamada vs. goto) ...
BlueRaja - Danny Pflughoeft
@ BlueRaja-DannyPflughoeft Lo sé, pero necesitaba un ejemplo simple para explicarlo.
RobinJ
5

Otro gran problema que aún no se menciona es que Linux tiene mejores sistemas de archivos. El rendimiento de NTFS con archivos pequeños no es tan bueno: ext3 es mejor y ext4 es mucho, mucho mejor. Hay algunas especulaciones interesantes sobre por qué en otra pregunta .

Cuando abre un programa, una cantidad significativa del tiempo de inicio es cargar un montón de archivos pequeños del disco, por lo que tener un sistema de archivos que lo haga rápidamente es muy importante.

Brendan Long
fuente
4

Esta es solo mi opinión, pero creo que hay varias razones por las que los sistemas GNU / Linux son más rápidos que Windows y no todos están relacionados con el núcleo:

  • Obviamente, existe la razón explicada por RobinJ, es bastante obvio que si el software es de código abierto, el código tiende a escribirse de manera más eficiente
  • Linux utiliza componentes muy optimizados, por ejemplo, utiliza un programador muy optimizado que tiende a maximizar la utilización de la CPU.
  • Los sistemas Linux sufren menos de fragmentación de memoria
  • Los sistemas Linux tienen un mejor uso de la memoria principal y, por lo general, tienden a usar la memoria caché de forma masiva, mientras que los sistemas Windows tienden a usar la memoria virtual de forma masiva
  • El kernel de Linux se actualiza continuamente y las partes inútiles generalmente se eliminan, aunque Linus Torvalds dijo que el kernel de Linux se está volviendo "enorme e hinchado", en oposición a las actualizaciones del kernel NT generalmente se construyen sobre las existentes.
Onyris
fuente
3

Creo que el núcleo solo no es la respuesta. Windows 7 es la primera vez que Windows responde lo suficiente como para considerarlo aceptable.

Creo que más del diferencial de velocidad está relacionado con los pensamientos de @ RobinJ sobre ingeniería de software. Todo * en Windows está construido en el MSDN a través de algún tipo de marco de Microsoft u otro. En realidad, esto está relacionado con cómo las grandes empresas aman a Microsoft; Microsoft se trata de ayudar a diferentes programas / suites / tecnologías a comunicarse entre sí.

A continuación ... para facilitar a los desarrolladores tener cubiertos los elementos esenciales (y no reinventar la rueda) Microsoft permite a los fabricantes agrupar y / o requerir bibliotecas precompiladas como Microsoft Visual C ++ 2008 Redistributable. O .Net4.0, MSSQL 2005, ad nauseum. Hay algo así como diez años de paquetes que los desarrolladores pueden usar y desarrollar, y requieren que los usuarios finales instalen en sus computadoras Windows para poder usar el nuevo software.

Entonces, para que el programa Zyzzyx se cargue y se ejecute, una o más bibliotecas redistribuibles de MSDN deben estar presentes y en ejecución. Estas bibliotecas determinan cómo los programas interactúan con el sistema operativo.

Para reducirlo, diría que la compatibilidad intencional de Windows a lo largo de décadas de software lo hace hinchado y, en ocasiones, más lento que un sistema Linux comparable. También tenga en cuenta que he desarrollado un software visual para Windows pero no para Linux ... no GTK, Qt, Py, nada, por lo que mis suposiciones acerca de que Linux es menos hinchado son solo eso.

editado para agregar: además, el software FOSS tiene gente que lo mejora todo el tiempo, por lo que GTK mejorará a medida que pase el tiempo en lugar de que GTK-2005 y GTK-2008 estén en la misma computadora, mientras que Microsoft lo hace todo el tiempo.

* - ok, hay excepciones, estoy seguro.

Chris K
fuente