В чем разница между 32-разрядной и 64-разрядной версиями и какую из них я должен выбрать?

Я считаю, что главный вопрос при выборе между 32 и 64 битами заключается не в том, "Поддерживает ли мой процессор 64 бита — если да, то я должен использовать 64, потому что это в два раза лучше", а "Сколько у меня памяти?".

64-разрядные программы используют примерно на 50% больше памяти, чем их 32-разрядные аналоги. Результатом этого являются:

  • >>меньше кода / данных может поместиться в кэш процессора - больше пропусков в кэше - ваш сверхбыстрый процессор больше ожидает, пока контроллер памяти извлекет данные из оперативной памяти. Процессор также должен считывать больше данные, потому что они более раздуты.

  • >>Linux использует нераспределенную оперативную память для кэширования дисков. Меньше доступной свободной памяти - меньше места для дисковых кэшей - медленный доступ к диску

  • Как только у вас заканчивается оперативная память, и система начинает подкачку - доступ к диску в тысячи раз медленнее, чем к оперативной памяти, поэтому любые потенциальные преимущества 64-разрядного кода (см. Ниже) вылетают из окна.

С другой стороны, в 64-разрядном режиме процессор имеет больше регистров, поэтому ему не нужно часто обращаться к памяти, кроме того, некоторые вычисления (64-разрядные числа и т.д.) Более эффективны. Таким образом, как правило, код, который не ограничен памятью, выполняется немного быстрее в 64-разрядном режиме.

Итак, если в вашей системе, скажем, 2 Гб оперативной памяти или меньше, то я бы определенно выбрал 32 бита. Более 4 гигабайт - преимущества 64 бит становятся все более заметными. Вокруг 4GiB находится "серая зона" - вам нужно сделать выбор самостоятельно.

Вот скриншоты (довольно старой) ванильной Ubuntu, работающей в VirtualBox с 1 ГБ оперативной памяти:

32 бит: использует 388 Мб оперативной памяти сразу после загрузки, никаких дополнительных приложений не запущено (на скриншоте 397780 КБ, что составляет 388 МБ)

32 bit Ubuntu

64-разрядная версия: использует 491 Мб оперативной памяти (из скриншота, 503452 КБ = 491 МБ)

64 bit Ubuntu

Кроме того, в моем тестировании веб-приложение, написанное на Python, использовало на 64-разрядной машине на 60% больше памяти, что привело к тому, что набор тестов был запущен за 380 секунд на 32-разрядной машине, но занял 523 секунды на 64-разрядной (оба с 1 Гб оперативной памяти). Если бы машины не были ограничены оперативной памятью, результаты, скорее всего, были бы другими (как показывают тесты phoronix).

Вот несколько более тщательных и недавних тестов: http://kernel.ubuntu.com /~cking/x32/Quantal-x32-power-memory-comparations.ods

mem freemem usedswap used

По сути, это все равно, что отказаться от 30% вашей оперативной памяти в обмен на возможная выгода 10% скорости процессора.