Linux и ядро ​​Windows [закрыто]

9

Я работаю на Linux и друг на Windows 7.

Я был поражен скоростью, с которой NetBeans, Eclipse, pgAdmin и другие программы открываются намного, намного быстрее в Linux, чем в Windows.

В чем основное различие между Linux и ядром Windows, которое вызывает эту разницу во времени?

Обе машины имеют одинаковую аппаратную конфигурацию.

Gerep
источник
1
Забавно, но мой опыт с точностью до наоборот - на всех моих компьютерах программы в Windows имеют тенденцию загружаться намного быстрее, чем в Linux (особенно в Windows 7, которая угадывает, какие программы вы будете открывать на основе прошлого использования, и предварительно загружает их в память ) . Возможно, его компьютер с Windows полон раздувающих программ? Является ли компания антивирусом только для Windows? Вы пробовали запускать Linux на той же машине (отказы жестких дисков сильно влияют на время загрузки) .
BlueRaja - Дэнни Пфлугхофт
@ BlueRaja-DannyPflughoeft спасибо за ваш комментарий. Как я уже говорил по этому вопросу, обе машины имеют одинаковую аппаратную конфигурацию, обе поставлены с Windows 7, но я пользователь Linux и нет, его окна не раздуты
Gerep
1
@ BlueRaja-DannyPflughoeft Я обнаружил интересную вещь: после установки антивируса для Windows он становится намного более медленным. Так что, на самом деле, нет необходимости в вирусе, просто установите антивирус. GNU / Linux не нужен (по крайней мере, пока) , и эта маленькая вещь также дала гораздо большую производительность.
Привет, Ангел,

Ответы:

8

Это всего лишь мое предположение, но я думаю, что когда вы работаете в компании, где, когда все скомпилировано (преобразовано в двоичные данные, которые могут выполнять компьютеры), никто больше не увидит исходный код, вы склонны быть намного ленивее, поскольку это не имеет значения, пока это работает .
Linux является открытым исходным кодом, поэтому каждый может увидеть исходный код, если захочет. Если вы ленивы и пишете действительно дурацкий кусок кода, который действительно замедляет работу системы или что-то в этом роде, ваша репутация, как все только что видели, ухудшается. Как разработчики, так и пользователи. Я думаю, что это одна из причин, почему разработчики открытых соусов склонны быть менее ленивыми.

Также факт, что ядро ​​ядра Windows никогда не было написано с целью стать тем, чем оно является сегодня (ни один из них не был Linux ', но они приложили усилия для оптимизации старых битов), а разработчики просто всегда добавляли и добавляли Кроме того, до тех пор, пока код не стал настолько загадочным, что никто больше не мог из него что-то сделать. Два свойства грязного кода заключаются в том, что часто существует большая избыточность, и что вы больше не видите связей между двумя частями кода так легко, что делает невозможным даже начинать оптимизацию. Просто пример (не загадочный);

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

Приведенный выше пример можно сделать гораздо эффективнее;

for (int i = 0; (i < 20) && (x == y) && (z <= u); i++)
{
    banana ();
}
RobinJ
источник
1
Я верю в область программирования, в настоящее время все согласны с тем, что ленивое и / или неаккуратное кодирование хорошо оптимизировано в компиляторах. Тем не менее, компиляторы не могут помочь раздувать и наследие, которое может быть там - и связано с вашими намерениями.
Крис К
4
Оба этих примера кода почти наверняка будут скомпилированы в одно и то же (минус вызов функции и
переход
@ BlueRaja-DannyPflughoeft Я знаю, но мне нужен простой пример, чтобы объяснить это.
RobinJ
5

Еще одна важная проблема, о которой еще не говорилось, - это то, что Linux имеет лучшие файловые системы Производительность NTFS с небольшими файлами не так уж велика - ext3 лучше, а ext4 намного, намного лучше. Есть несколько интересных предположений о том, почему в другом вопросе .

Когда вы открываете программу, значительная часть времени запуска загружает кучу крошечных файлов с диска, поэтому очень важно иметь файловую систему, которая делает это быстро.

Брендан Лонг
источник
4

Это только мое мнение, но я думаю, что существуют разные причины, по которым системы GNU / Linux работают быстрее, чем Windows, и не все они связаны с ядром:

  • Очевидно, что есть причина, объясненная RobinJ, совершенно очевидно, что если программное обеспечение с открытым исходным кодом, код, как правило, написан более эффективно.
  • Linux использует очень оптимизированные компоненты, например, он использует очень оптимизированный планировщик, который имеет тенденцию максимизировать загрузку процессора.
  • Системы Linux меньше страдают от фрагментации памяти
  • Системы Linux лучше используют основную память и обычно стремятся к массовому использованию кеша, системы Windows вместо этого стремятся к массовому использованию виртуальной памяти
  • Ядро Linux постоянно обновляется, и ненужные части обычно удаляются, хотя Линус Торвальдс сказал, что ядро ​​Linux становится «огромным и раздутым», в отличие от обновлений ядра NT, которые обычно строятся поверх существующих.
Onyris
источник
3

Я верю, что само ядро ​​не ответ. Windows 7 - первый раз, когда Windows была настолько отзывчива, что я считаю ее приемлемой.

Я считаю, что большая часть разницы в скорости связана с мыслями @ RobinJ о разработке программного обеспечения. Все * в Windows построено на MSDN через какую-то платформу Microsoft или другую. Это на самом деле связано с тем, как Big Business любит Microsoft; Microsoft все о помощи различным программам / пакетам / технологиям общаться друг с другом.

Далее ... чтобы разработчикам было проще охватить основы (а не заново изобретать колесо), Microsoft позволяет производителям связывать и / или требовать предварительно скомпилированные библиотеки, такие как Microsoft Visual C ++ 2008 Redistributable. Или .Net4.0, MSSQL 2005, до тошноты. Разработчики могут использовать пакеты, рассчитанные на десять лет, и требовать от конечных пользователей установки на свои компьютеры Windows для использования нового программного обеспечения.

Поэтому для загрузки и запуска программы Zyzzyx должна присутствовать и работать одна или несколько распространяемых библиотек MSDN. Эти библиотеки определяют, как программы взаимодействуют с ОС.

Чтобы свести это к минимуму, я бы сказал, что преднамеренная совместимость Window с десятилетиями программного обеспечения делает его раздутым и иногда более медленным, чем сопоставимая система Linux. Также обратите внимание, что я разработал визуальное программное обеспечение для windows, но не для linux ... не GTK, Qt, Py, что угодно, поэтому мои предположения о том, что linux менее раздут, являются именно этим.

отредактировано, чтобы добавить: далее, в программном обеспечении FOSS есть люди, постоянно совершенствующие его, поэтому с течением времени GTK будет улучшаться, а не GTK-2005 и GTK-2008 на одном компьютере, в то время как Microsoft делает это постоянно.

* - Хорошо, есть исключения, я уверен.

Крис К
источник