Excel не использует все ядра

В этой статье мы рассмотрим вопрос оптимального использования Excel’ем ресурсов компьютера. Ведь даже если файл оптимизирован, бывает, что все равно виснет Excel. Почему? Можно сказать, что этот материал продолжение нашумевшей статьи «Почему тормозит Excel?«, в которой мы описывали все возможные проблемы именно внутри файлов Excel. Сейчас поговорим об оптимизации работы вашего ПК при работе с таблицами.

Почему виснет Excel

В большинстве случаев виной тормозов и зависаний Excel служит не оптимальное оформление, структура, данные файла, но бывает что и ресурс компьютера не задействован в полной мере. Например, процессор используется на 25%. Ниже мы предлагаем несколько вариантов, которые точно не помешает проверить если у вас виснет Excel.

Содержание

  • Excel использует 25% ресурсов процессора. Как исправить?
  • Как задействовать все процессоры. Настройка Windows
  • Не помогло, все равно виснет Excel… Еще причины
  • Похожие статьи

Excel использует 25% ресурсов процессора. Как исправить?

Современные компьютеры очень производительны, что позволяет работать в режиме многозадачности и работать в нескольких программах одновременно. Для того, чтобы Excel не занимал все ресурсы компьютера, у версий табличного редактора начиная с 2007 есть специальная настройка — Включить многопоточные вычисления. Проверьте включена ли она и задействована ли у вас полная мощность процессора.

Для этого зайдите в круглую кнопку Office (левый верхний угол) — Параметры Excel — найдите раздел Дополнительно — подраздел Формулы. См. первую картинку.

Проверьте, чтобы у вас стояла галочка «использовать все процессоры данного компьютера».

Можно так же принудительно поставить максимальное количество — в данном случае 4. Для некоторых расчетов может выручить. Я обращал внимание, что, например,  при сортировке больших таблиц часто используется только 1 процессор из 4 (по умолчанию), отсюда, кстати, и 25% использования процессоров, о котором часто упоминается. Установив принудительно максимальное количество задействованных потоков, вы уберете эту проблему.

Для включения функции многопоточных вычислений в VBA используйте команду:

Application.MultiThreadedCalculation.Enabled = True 

Кстати, отключить полное задействование тоже полезно, особенно, если вы выполняете параллельно несколько задач, а табличный редактор не в приоритете.

Как задействовать все процессоры. Настройка Windows

Кстати, не только Excel может ограничить количество процессоров в работе. В Windows тоже есть такая возможность.

Для того, чтобы проверить настройку Windows, нажимаем Пуск — Выполнить — вводим команду msconfig — заходим на вкладку Загрузка — Дополнительные параметры..

Виснет Эксель 2

Убедитесь, что число процессоров не задано вручную на минимальном уровне, или галочка не установлена и система по умолчанию использует максимум ресурсов.

Не помогло, все равно виснет Excel… Еще причины

  • Если у вас открыты несколько книг Excel, то расчет происходит по всем измененным ячейкам во всех открытых книг. По возможности закройте ненужные книги.
  • Если у вас по-настоящему большие таблицы (~0,5 млн строк и больше) и/или сложные вычисления, то лучше использовать Power Pivot. Которому мы скоро посветим большую рубрику!
  • Постарайтесь закрыть другие программы, которые забирают много оперативной памяти. Google Chrome самый распространенный замедлитель расчетов в Excel.
  • Установите Excel 2010 или 2013, в нем действительно хорошо потрудились над улучшением скорости вычислений. Мой опыт показывает, что ускорение достигает 2-3 раз для некоторых файлов, в первую очередь за счет асинхронного вызов а функций.
  • Не забывайте отключать автообновления экрана во время вычислений макросом
    Application.ScreenUpdating = False

Если эти методы вам не помогли, проверьте также способы, предложенные в этой статье Почему тормозит Excel?

Остались еще вопросы? Пишите их в комментариях под статьей!

  • honor8

Я работаю с большими файлами в excel
Вот что происходит в момент, когда я пытаюсь удалить разом 50 000 строк.
Q2KokgKSvN1L12.jpg
Вся нагрузка идет только на одно ядро, а остальные не телятся.
Вопрос — можно ли это исправить — или «excel — такой excel, пользуйся другими программами?»

P.S. В настройках включены многопоточные вычисления для формул. Но насколько я понимаю — это другой тип задачи (удаление строк)


  • Вопрос задан

    более года назад

  • 628 просмотров

Пригласить эксперта

Не все задачи можно распараллелить. И не все программы это умеют. В вашем случае — разве что пинать разработчиков Excel

Как минимум проверить разрядность офиса. Если он 32 бит, то больше одного ядра использовать не будет.
64х битный офис в помощь, хотя и проца одного мало для больших вычеслений, вычисления формул привязаны еще к объему памяти и неплохо бы SSD (хотя он для всего не плох ))))


  • Показать ещё
    Загружается…

14 апр. 2023, в 04:52

5000 руб./за проект

14 апр. 2023, в 01:55

1000 руб./в час

13 апр. 2023, в 23:50

3000 руб./за проект

Минуточку внимания

  • Remove From My Forums
  • Вопрос

  • Здравствуйте, уважаемые участники форума,

    Я выбираю компьютер для сложных расчетов в программе Excel (Windows 10, Office 2019): макрос за один раз обрабатывает 80 файлов, в каждом файле 25000 строк, 20 столбцов, всего 500000 ячеек, 400000 (четыреста тысяч)
    формул, включая формулы массива в одном столбце.

    В настоящее время у меня ноутбук с процессором i5-8265U, 4 ядра, 8 потоков. На этом компьютере во время обработки макросом 80-ти файлов Excel загружает CPU всего лишь на 25-30 % согласно диспетчеру
    задач и вычисление занимает 4 часа.

    Я хотел бы ускорить процесс вычислений и приобрести более производительный компьютер для этих целей.

    Что самое важное в компьютере, а на что меньше обращать внимание, если компьютер будет использоваться только для работы Excel:

    — Процессор?

    — Количество ядер?

    — Многопоточность?

    — Поддерживает ли Excel многопоточность в вычислениях?

    — Нужна ли многоядерность процессора для работы в Excel?

    Может, вы посоветуете конкретный процессор для описанной задачи.

    Благодарю за ответы.

    С уважением.

Ответы

  • Здравствуйте, уважаемые участники форума,

    Я выбираю компьютер для сложных расчетов в программе Excel (Windows 10, Office 2019): макрос за один раз обрабатывает 80 файлов, в каждом файле 25000 строк, 20 столбцов, всего 500000 ячеек, 400000 (четыреста тысяч)
    формул, включая формулы массива в одном столбце.

    В настоящее время у меня ноутбук с процессором i5-8265U, 4 ядра, 8 потоков. На этом компьютере во время обработки макросом 80-ти файлов Excel загружает CPU всего лишь на 25-30 % согласно диспетчеру
    задач и вычисление занимает 4 часа.

    Я хотел бы ускорить процесс вычислений и приобрести более производительный компьютер для этих целей.

    Что самое важное в компьютере, а на что меньше обращать внимание, если компьютер будет использоваться только для работы Excel:

    — Процессор?

    — Количество ядер?

    — Многопоточность?

    — Поддерживает ли Excel многопоточность в вычислениях?

    — Нужна ли многоядерность процессора для работы в Excel?

    Может, вы посоветуете конкретный процессор для описанной задачи.

    Благодарю за ответы.

    С уважением.

    Многопоточность поддерживается при вычислениях самих таблиц. Проверьте включена ли она как показано на картинке ниже.

    Однако скрипт является однопоточным. Если у вас все делает скрипт, то количество ядер особого значения не имеет — что у вас и наблюдается. У вас две решения этой проблемы:

    — Переделать скрипт чтоб он использовал многопоточность. Поиск «vba excel multithreading» поможет найти варианты.

    — Использовать процессор с максимальной однопоточной производительностью. На сегодня это i9-10900k. Но он быстрее вашего текущего процессора всего в полтора раза на одном потоке.

    В общем, замена процессора без изменения скрипта скорее всего тупик. Если же вы сделайте свой скрипт многопоточным, то можно будет получить 10х «прибавки» на процессоре с большим числом ядер или в
    облаке.

    Может быть, вы знаете определенный ресурс, который может помочь настроить VBA на многопоточность?

    Нет, не знаю. Но по указанному мной запросу поисковики выводят судя по всему полезную информацию. Первая же ссылка на stack overflow выглядит многообещающей…

    Скрипт потребуется по факту переписать, а не «настроить». Как именно — зависит от того что вы делайте в этом скрипте. Например, можно обрабатывать отдельные файлы параллельно если то что вы делайте это допускает.

    _Самый быстрый_ процессор всего на 50% быстрее вашего. Как вы думайте какой эффект будет от процессора за $100? Помните что ваш текущий процессор имеет турбо буст на 3.9 GHz на которой он и будет работать в однопоточном режиме.
    Разница с указанными вами процессорами будет в пределах 5-10% — если вообще будет.

    Если скрипт будет переписан, то надо брать процессор с большим числом ядер. Если бюджет ограничен, то наверное стоит смотреть в сторону AMD. Например AMD Ryzen 5 3600 обеспечивает самую высокую многпоточную производительность
    в растете на доллар цены. 


    This posting is provided «AS IS» with no warranties, and confers no rights.

    • Предложено в качестве ответа

      21 июля 2020 г. 15:31

    • Помечено в качестве ответа
      Иван ПродановMicrosoft contingent staff, Moderator
      22 июля 2020 г. 8:18

  • Здравствуйте, уважаемые участники форума,

    Я выбираю компьютер для сложных расчетов в программе Excel (Windows 10, Office 2019): макрос за один раз обрабатывает 80 файлов, в каждом файле 25000 строк, 20 столбцов, всего 500000 ячеек, 400000 (четыреста тысяч)
    формул, включая формулы массива в одном столбце.

    В настоящее время у меня ноутбук с процессором i5-8265U, 4 ядра, 8 потоков. На этом компьютере во время обработки макросом 80-ти файлов Excel загружает CPU всего лишь на 25-30 % согласно диспетчеру
    задач и вычисление занимает 4 часа.

    Я хотел бы ускорить процесс вычислений и приобрести более производительный компьютер для этих целей.

    Что самое важное в компьютере, а на что меньше обращать внимание, если компьютер будет использоваться только для работы Excel:

    — Процессор?

    — Количество ядер?

    — Многопоточность?

    — Поддерживает ли Excel многопоточность в вычислениях?

    — Нужна ли многоядерность процессора для работы в Excel?

    Может, вы посоветуете конкретный процессор для описанной задачи.

    Благодарю за ответы.

    С уважением.

    Многопоточность поддерживается при вычислениях самих таблиц. Проверьте включена ли она как показано на картинке ниже.

    Однако скрипт является однопоточным. Если у вас все делает скрипт, то количество ядер особого значения не имеет — что у вас и наблюдается. У вас две решения этой проблемы:

    — Переделать скрипт чтоб он использовал многопоточность. Поиск «vba excel multithreading» поможет найти варианты.

    — Использовать процессор с максимальной однопоточной производительностью. На сегодня это i9-10900k. Но он быстрее вашего текущего процессора всего в полтора раза на одном потоке.

    В общем, замена процессора без изменения скрипта скорее всего тупик. Если же вы сделайте свой скрипт многопоточным, то можно будет получить 10х «прибавки» на процессоре с большим числом ядер или в
    облаке.


    This posting is provided «AS IS» with no warranties, and confers no rights.

Уважаемые форумчане, доброго времени суток.

Есть такой вопрос:
Имеется:
1) Компьютер с процессором на 8 ядер.
2) Оперативная память 16 Гб.
3) Винчестер твердотельный.
2) Windows 8 x64.
3) Excel 2013 x64 (В настройках стоит использовать для вычислений все ядра процессора).

В Excel выполняется замена связей с одной книги на другую (файлы объемные). Замена производится через инструмент: Данные->Изменить связи.

В итоге Excel грузит процессор максимум на 20% и процесс длиться достаточно долго (Диспетчер задач показывает, что при этом выполняется порядка 40 потоков).
Оперативная память и жесткий диск так же не перегружены (причем загрузка так же порядка 20-25%).
Во время изменения связей компьютер работает нормально, никаких признаков загруженности.

Вопрос:
Почему Excel не использует больше ресурсов процессора?

Мои предположения:
1) В Windows стоит ограничение на загрузку процессора одним приложением.
2) Все же что-то не то с настройками Excel, вне зависимости от галочки использовать все ядра.
3) Алгоритм замены связей не адаптирован под многоядерное вычисление и реализован только в одном потоке (по моим оценкам наиболее вероятный вариант).

Прошу помочь разобраться в проблеме.

Все ниже относится к Excel 2007 и более ранним версиям. Согласно ссылке @ Ƭᴇcʜιᴇ007, размещенной в комментариях выше, в Excel 2013 имеется некоторая встроенная поддержка многопоточности. Тем не менее, предупреждение просто забыть об этом, если вы не опытный программист, по-прежнему применяется.

К сожалению, VBA не поддерживает многопоточность, поэтому ваши вычисления VBA будут ограничены одним ядром вашего процессора.

Однако существует продвинутый метод обмана VBA для запуска нескольких потоков путем генерации файлов VBscript и их одновременного выполнения. Это позволяет обойти эту проблему, запустив ваш код вне процесса Excel и позволяя Windows управлять ресурсами, выделенными различным потокам.

Тем не менее, заставить его работать, скорее всего, будет означать полное переосмысление логики вашего кода (то есть вам придется выяснить, как разделить задачи таким образом, чтобы они выполнялись одновременно), что может очень хорошо быть невозможным для вашего проекта. Я никогда не реализовывал это сам, поэтому я не могу помочь вам с этим больше, чем рассказывать вам то, что я уже сказал вам.

Если вы хотите проникнуть в кроличью нору, вот вам интересное сообщение в блоге, которое показывает пример того, как это делается. Имейте в виду: если вы не являетесь опытным программистом, вы можете также забыть эту идею и просто признать, что VBA работает в одном потоке.

Другие ресурсы по переполнению стека для смелых:
https://stackoverflow.com/q/19159025/657668
https://stackoverflow.com/q/5721564/657668

Есть, конечно, другие способы оптимизировать код VBA без использования нескольких потоков. Не видя ваш код, невозможно сделать точные предложения, но вот пара обычных подозреваемых:

  • Загрузите данные из вашего листа в массив для более быстрой обработки. Взаимодействия с рабочим листом являются основным узким местом в исполнении VBA, и их можно минимизировать, работая с массивами.
  • С этим связана проблема, когда Excel пересчитывает рабочую книгу после каждого изменения ячейки. Этого можно избежать, установив Application.Calculation = xlManual . Просто не забудьте установить его обратно в Application.Calculation = xlAutomatic перед выходом из вашего Sub.

Like this post? Please share to your friends:
  • Excel не изменяется формат ячеек
  • Excel не изменяется значение ячейки
  • Excel не защищать группировки
  • Excel не запускать две
  • Excel не запускается с ярлыка