- 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.
Сборка компьютера для больших вычислений
Всем привет.
Столкнулся с проблемой очень долгих вычислений в excel.
Формула массива данных обрабатывает запрос очень долго.
Моя таблица это 3 042 240 ячеек. Таких листов у меня 6.
Текущая комплектация, это ноутбук:
Ноутбук HP ProBook 455 G7, 15.6″, AMD Ryzen 5 4500U 2.3ГГц, 8ГБ, 256ГБ SSD, AMD Radeon , Free DOS, 1F3M6EA, серебристый
Но я хочу собрать именно ПК. Бюджет 80 000 руб. Не ноутбук. Не игровой.
Нужна большая вычислительная мощность
Если вы не понимаете зачем нужен производительный ПК для расчёта больших данных, пропустите эту тему мимо. Не флудите в комментариях, пожалуйста.
Идеи типа отключить автообновление ячеек тоже не предлагать плиз, уже устал слушать)
Буду рад вашим комментариям, но строго по теме.
2 чел.
DivineSoul Пользователь Сообщений: 35 |
Добрый день! Суть проблемы — есть екселевский файл весом 60-70мб (в зависимости от заполненных данных). В нём находиться огромнейшее кол-во сложнейших вычислений. Я пришёл к выводу, что скорее всего у меня проблемы с производительностью ПК. Моё железо сейчас: P.s. файл трогать нельзя! Он полностью рабочий (в нём никаких условных форматирований — только формулы) — нужно изменить только скорость обработки данных. Изменено: DivineSoul — 12.05.2016 12:26:52 |
Ivan.kh Пользователь Сообщений: 2024 |
|
DivineSoul, поможет только отключение автоматического пересчета формул. В остальном надо менять подход к тому, для чего используется данный файл. |
|
DivineSoul Пользователь Сообщений: 35 |
Я не верю, что производительность железа никак не влияет на скорость работы программы… Я почитал описание программы Excel на офф сайте, и поразился тому, какой объём данных она может обрабатывать (моя таблица и на 2% не соответствует тому, что заявлено в мануале производительности программы), а по факту тормозит так, как будто забита формулами до предельных возможностей программы). |
DivineSoul Пользователь Сообщений: 35 |
Поясню подробнее — мой файлик является своеобразным аналогом 1С-ки — т.е. при помощи формул воссоздан почти весь функционал программы 1С для конкретных задач. Вопрос стоит только в том, как ускорить обработку вводимых данных, чтобы не ждать по 5-7 секунд после каждого введённого значения!? |
Есть понятие производительность ПК, а есть производительность самих исполняемых приложений. Есть еще последовательность вычислений — ПК будет обрабатывать данные в файле ровно так как Вы напишите формулы. Если в файле эксель много формул написанных «с запасом» (когда обращение идет не на выделенные диапазоны с данными — а на диапазон столбцов/строк). Вообще для комфортной работы эксель достаточно вот такой конфигурации: Еще следует помнить что эксель не должен использоваться как База Данных для каких-то серьезных проектов. Простые способы ускорить работу эксель: В общем это из того что пришло в голову. Никто не знает столько — сколько не знаю я |
|
китин Пользователь Сообщений: 931 |
#7 12.05.2016 14:27:52
Странно. Я все жизнь считал , что десяток простых и быстрых формул будут работать быстрее, чем одна МЕГАформула. Неужели я ошибался? Вполне такой нормальный кинжальчик. Процентов на 100 |
||
китин, получается, да. несмогу подобрать исключения — но возможно они есть, но в общем суть вот в чем: условно говоря так: п.с.: зависимость, конечно, не линейная — но она присутствует. Изменено: fakenomore17 — 14.05.2016 23:17:19 Никто не знает столько — сколько не знаю я |
|
китин Пользователь Сообщений: 931 |
#9 12.05.2016 14:35:25
Изменено: китин — 13.05.2016 11:53:31 Вполне такой нормальный кинжальчик. Процентов на 100 |
||
Ivan.kh Пользователь Сообщений: 2024 |
#10 12.05.2016 14:49:04
не спешите стреляться, вопрос по поводу скорости неоднозначен ТЫЦ |
||
Sanja Пользователь Сообщений: 14838 |
#11 12.05.2016 14:51:39 На СУБД переходите. Или хотя-бы на макросы.
? Изменено: Sanja — 12.05.2016 14:56:16 Согласие есть продукт при полном непротивлении сторон. |
||
китин Пользователь Сообщений: 931 |
Ivan.kh,спасибо!!!! поживем еще Ivan.kh ) я тут пару месяцев назад наваял формулу так символов в 300-350 где то за полчаса. Вчера два часа пытался переделать ее под новые реалии.плюнул написал новую.Теперь думаю что будет если босс снова решит условия поменять Изменено: китин — 12.05.2016 15:03:35 Вполне такой нормальный кинжальчик. Процентов на 100 |
Михаил С. Пользователь Сообщений: 10514 |
#13 12.05.2016 15:59:15
Я тоже так считаю. Не вижу случая, когда мега-формула будет работать быстрее нескольких простых формул. Особенно это заметно, если в МЕГА-формуле используются массивы и таких формул много. Или в мега-формуле несколько раз пересчитывается один и тот же фрагмент. По ускорению — если есть возможность по объёму данных — используйте 2003 офис; затем — 2010. 2013 и 2016 заметно медленнее 2010. Во всяком случае на слабом железе. |
||
TheBestOfTheBest Пользователь Сообщений: 2366 Excel 2010 +PLEX +SaveToDB +PowerQuery |
#14 12.05.2016 16:38:36
— для ускорения пересчета — ++ Неизлечимых болезней нет, есть неизлечимые люди. |
||
ArtHome Пользователь Сообщений: 44 |
В экселе на быстродействие влияет тупо частота процессора. Так как он грузит только одно ядро процессора. ЗЫ А памяти у ТС и так уже много. Изменено: ArtHome — 13.05.2016 11:54:31 |
MCH Пользователь Сообщений: 3875 |
Основной прирост скорости дает замена процессора на более быстрый и многоядерный (для пересчета формул в Excel 2007 и выше) Лучше всего заменить формулы на разовые расчеты макросом, SQL запросы либо на сводные таблицы. Например у Вас в файле огромное количество ВПР, которые постоянно пересчитываются. |
Бахтиёр Пользователь Сообщений: 1930 Excel 365 |
#17 12.05.2016 19:01:53
по-моему у ТС как раз этот случай, исходя из:
Изменено: Бахтиёр — 12.05.2016 19:06:04 |
||||
Бахтиёр Пользователь Сообщений: 1930 Excel 365 |
#18 12.05.2016 19:09:41
? Прикрепленные файлы
|
||
JeyCi Пользователь Сообщений: 3357 |
#19 12.05.2016 19:52:48
для случаев, указанных в #13, наверно, всё-таки будут улучшения… мне кажется… по крайней мере, в своё время, чтобы взглянуть на AutoCad (много оперативки заполняет) — мне пришлось увеличивать её, и это помогло… имхо (случаи из #13 тоже, видимо, много озу могут занять) Изменено: JeyCi — 12.05.2016 19:54:50 чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок — обратитесь к собеседнику на ВЫ — ответ на ваш вопрос получите — а остальное вас не касается (п.п.п. на форумах) |
||
Фродо Пользователь Сообщений: 348 |
не хватило сил прочесть все посты суть: изучайте направление Как оптимизировать формулы/макросы для ускорение их работы а то что вы ферари себе купите, она всеравно не поедет быстрей жигулей по грунтовой дороге и прицепленным белазом у меня простая версия Экселя, в ней нет кнопки «Прочитать мысли и сгенерировать файл пример» |
ArtHome Пользователь Сообщений: 44 |
#21 13.05.2016 03:54:46 Бахтиёр, это для успокоения пользователей. Видимо в определённых ситуациях даёт прирост производительности, когда есть несвязанные блоки вычислений. Но в узких местах может быть только один процесс. Пример — выполняем бесконечный цикл
При этом видим, что у четырёхядерного процессора загрузка всего 25%. Операционная система бросает эксель с одного ядра на другое, но общая загрузка процессора — 25%, увы. Прикрепленные файлы
|
||
ArtHome Пользователь Сообщений: 44 |
#22 13.05.2016 03:58:56
Как в анекдоте — чукча не читатель, чукча писатель, однако! |
||
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
#23 13.05.2016 04:08:59 Доброе времени суток
ArtHome, как бы Бахтиёр показывал настройку числа используемых процессоров в рамках темы. Excel использует многопоточные вычисления для расчётов формул. VBA же как был однопоточным, так и остался. Так что ваше замечание, в рамках темы не совсем корректно. |
||
ArtHome Пользователь Сообщений: 44 |
#24 13.05.2016 04:51:21
Два разных несвязанных документа — без проблем, будут исполнятся в разных потоках. Но речь идёт у ТС про один проект, в котором изменение одной ячейки приводит к перерасчётам продолжительностью в несколько секунд. Эксель банально пересчитывает таблицы данных одну за другой, хотя там-то уж можно было бы распараллелить работу, однако не получилось. Потоки ещё могут использоваться при построении деревьев вычислений. Но для случая ТС уже вся эта работа выполнена, проект в активном актуальном состоянии. И после внесения изменений пользователем тупо начинается пересчёт всей цепочки. Возможно у ТС всё усугубляется неверной работой макросов — например запрещать и разрешать события надо всего один раз, избегая вложенностей. Но на своих проектах, в оптимальности которых я уверен, я неоднократно видел, что когда эксель выполняет перерасчёты, грузится только одно ядро. Более того, программируя на более других языках многопоточные приложения под Windows, я понимаю, почему это происходит именно так — трудно начать расчёт в параллельном потоке с середины вычислений не имея результата предыдущей части. Можно только что-то оптимизировать и подготовиться, но эта оптимизация выполняется в самом начале, и на десятый раз уже давно всё выоптимизировано…) |
||
ZVI Пользователь Сообщений: 4328 |
Excel отключает многопоточные вычисления, если в формулах используются такие функции: Для больших книг с множеством формул бывает полезно нажать Alt-F11, затем CTRL-G, ввести ActiveWorkbook.ForceFullCalculation=True и нажать Enter. |
Бахтиёр Пользователь Сообщений: 1930 Excel 365 |
#26 13.05.2016 07:24:22 Владимир, если я правильно Вас понял, стоит ли на большие книги с множеством формул:
? Или же нужно выполнить это действие для книги один раз и забыть об этом? Изменено: Бахтиёр — 13.05.2016 07:27:56 |
||
ZVI Пользователь Сообщений: 4328 |
#27 13.05.2016 08:12:50
Да, но уточню, что данный метод дает эффект если на листе используется множество многоуровневых ссылок: ячейка ссылается на другую, та на третью. и так много раз. Для таких формул для каждого листа Excel создает своё дерево зависимостей. При изменении значения ячейки она сначала помечается как Dirty — отметка о необходимости пересчета зависимостей формул от этой ячейки. Затем для каждой такой помеченной ячейки сверху-вниз и слева-направо сканируются остальные ячейки, которые ссылаются на неё и найденные зависимые ячеки тоже помечаются как Dirty. Чем больше уровней вложения зависимостей, тем дольше такой процесс длится. После этого запускается пересчет формул всех найденных таким образом ячеек. А ForceFullCalculation=True исключает процесс сканирования и просто запускается процесс пересчета всех формул листа, что может быть быстрее (зависит от глубины зависимостей формул) . Замедление пересчета может быть связано и с тем, что книга редактировалась в другой версии Excel или с другим количеством ядер процессора.
Изменено: ZVI — 13.05.2016 08:25:20 |
||||
ZVI Пользователь Сообщений: 4328 |
ForceFullCalculation=True имеет смысл пробоватьа в тех случаях, когда книга открывается долго или когда редактирование/удаление ячеек производится медленно. |
Бахтиёр Пользователь Сообщений: 1930 Excel 365 |
#29 13.05.2016 09:05:33 Владимир, спасибо большое за подробный (как всегда) ответ.
Как раз часто сталкиваюсь с такими случаями |
||
JeyCi Пользователь Сообщений: 3357 |
#30 13.05.2016 09:10:42
честно говоря, только что применила (на всякий случай на открытие) 2 раза проверила — с последующим открытием с этими строками и без — и как-то ~ на 20сек. увеличилось время открытия (но уже, как вернуть, не знаю)
(-случай примерно такой — переустанавливала windows и xl — немного др версии с xl2010 на xl2010sp1) Изменено: JeyCi — 13.05.2016 18:01:55 чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок — обратитесь к собеседнику на ВЫ — ответ на ваш вопрос получите — а остальное вас не касается (п.п.п. на форумах) |
||||
Здравствуйте, нужна помощь в понимании вопроса, а именно:
Какие хардварные особенности ПК:
— архитектура CPU, кол-во ядер, частота на ядро и т.д;
— параметры RAM, латентность, частота, ранговость и т.д;
— остальные особенности (SSD, чипсет и т.п.),
в наибольшей степени влияют на производительность приложений Excel (основные оптимизированные формульные вычисления, Power Query, Power Pivot и т.п.).
Если взять за основу мысль, что все формулы оптимальны, а нагрузка зависит только от большого объёма данных.
Есть ли информация, на что именно нужно обращать внимание, где то бутылочное горлышко для подсистем Excel, которое стоит расширить, чтобы не тратить сотни тысяч нефти на сборку мегамонстра с избыточными ресурсами, которые будут простаивать + энергопотребление.
Понятно, что для более нагруженных баз данных и вычислений мы можем обратиться, например, к языкам R или Python, в рамках data science, но пока хочется разобраться в вопросе вычислительного потенциала Excel и что на это влияет в хардварном плане, без CUDA.
Буду очень благодарен за развёрнутый ответ или направление, в котором стоит копать, на какие синтетические тесты процессоров смотреть (и только ли в процессоре дело?)
Использую Excel в рамках Office 2019 Pro.
На данный момент ноутбук на базе i7 4700HQ (4 ядра, 8 потоков в бусте до 3,4), оперативки 8 Гб DDR3, вся система и проги, файлы баз данных на этом же диске (SSD).
До этого был десктоп на базе Ryzen 1700 (8/16), 16 Гб оперативы, SSD…работал чуть шустрее.