none
Производительный ПК для расчетов в Excel RRS feed

  • Вопрос

  • Всем здравствуйте. Производим расчеты в Microsoft Excel 2010 (не обсуждаем почему, так удобней). Поиск решения занимает значительное время (более часа). Встал вопрос как ускорить этот процесс. Первоначально задача выполнялась на машине послабее (core i5-4690, DDR3 8Гб, система и офис установлены на SSD. Windows 10 x64, Office 2010). Попробовали на машине посильней (core i7-7700, DDR4 16Гб, система и офис на SSD. Windows 10 x64, Office 2016). К удивлению, прироста производительности при решении практически не оказалось (даже показалось что на более слабой машине быстрее работает). Отсюда вопрос: Какие ресурсы важны для Excel? На какой машине он будет работать быстрее? Желательно не предлагать переход на Linux и использование Matlab и т.п.
    10 марта 2017 г. 13:24

Все ответы

  • Подозреваю ваш вопрос из серии "Как эффективно стрелять из молотка, другие варианты по типу рогатки не предлагать"

    Учитывая что вы добавляете производительность вы наверное из чего то выходите, например из монитора ресурсов, который вам показывает нехватку ресурсов.

    Каких ресурсов под ваши задачи вам не хватает исходя из ПО предназначенного для определения таких величин?

    Если ваши расчеты проводятся не эффективно либо ваше решение не предназначено для этих расчетов, либо вы неправильно считаете


    The opinion expressed by me is not an official position of Microsoft

    10 марта 2017 г. 13:44
    Модератор
  • Если ваш макрос или скрипт постоянно обращается к ячейкам, то это происходит через объектную модель, а значит, по определению, медленно. Использование более производительного процессора здесь не сильно поможет. Если есть возможность оптимизировать ваш макрос или скрипт, например, считать значения ячеек в переменные и массивы и уже с ними выполнять дальнейшую работу, то следует этим воспользоваться. Даже отключение автообновления экрана на время вычислений

    Application.ScreenUpdating = False

    приводит к заметному повышению производительности. Мне удавалось повысить производительность сценария, работающего с таблицей Excel, примерно в 50 раз просто заменив прямую запись ячеек на заполнение через буфер обмена.



    10 марта 2017 г. 22:35
    Модератор
  • При чем тут молоток? Excel сделан для того, чтобы производить несложные расчеты или когда условия задачи все время меняются. Пока нет четкого алгоритма, рассчитывать в Excel удобней. После того, как процесс будет отлажен, будет написана программа соответствующая, которая понятно будет значительно быстрее работать.

    Я запускаю одну и ту же задачу с одинаковыми условиями на двух компьютерах. Для меня показателем производительности является счетчик выполнения операций самого excel и время, затраченное на выполнение задачи целиком.


    • Изменено Andrey_Dm 13 марта 2017 г. 8:29
    13 марта 2017 г. 8:29
  • При чем тут молоток? Excel сделан для того, чтобы производить несложные расчеты или когда условия задачи все время меняются. Пока нет четкого алгоритма, рассчитывать в Excel удобней. После того, как процесс будет отлажен, будет написана программа соответствующая, которая понятно будет значительно быстрее работать.

    Я запускаю одну и ту же задачу с одинаковыми условиями на двух компьютерах. Для меня показателем производительности является счетчик выполнения операций самого excel и время, затраченное на выполнение задачи целиком.


    Прочтите ответ еще раз, и ответьте на заданные вопросы

    С несложными расчетами ексель вполне сносно справляется например работа с таблицами (2-5 шт) по 200 - 300 строк по 10 - 20 значений в каждой проходит в секунды, по всей видимости ваши задачи выходят за рамки несложных расчетов.

    Примеры оптимизации вам предложил osr_


    The opinion expressed by me is not an official position of Microsoft

    13 марта 2017 г. 8:35
    Модератор
  • Послушайте, я был уверен что более производительный процессор выполняет одну и ту же задачу быстрее нежели более медленный. Это касается всех операций. В том числе и скриптов. По крайней мере, я был в этом уверен. Я прекрасно понимаю, что такое оптимизация кода.

    Вы отвечаете мне на вопрос - как ускорить выполнение задачи путем оптимизации кода.

    А я задавал вопрос: "Какие аппаратные ресурсы важны для скорости работы excel?" Может я как-то неправильно формулирую свой вопрос. Попробую по другому. Какие комплектующие компьютера влияют на скорость выполнения операций в excel? Т.е. что я могу модернизировать в компьютере, чтобы моя задача (именно в таком же виде) выполнялась быстрей?

    13 марта 2017 г. 8:38
  • Послушайте, я был уверен что более производительный процессор выполняет одну и ту же задачу быстрее нежели более медленный. Это касается всех операций. В том числе и скриптов. По крайней мере, я был в этом уверен. Я прекрасно понимаю, что такое оптимизация кода.

    Вы отвечаете мне на вопрос - как ускорить выполнение задачи путем оптимизации кода.

    А я задавал вопрос: "Какие аппаратные ресурсы важны для скорости работы excel?" Может я как-то неправильно формулирую свой вопрос. Попробую по другому. Какие комплектующие компьютера влияют на скорость выполнения операций в excel? Т.е. что я могу модернизировать в компьютере, чтобы моя задача (именно в таком же виде) выполнялась быстрей?

    Вы можете строить миллионы догадок, а можете ответить на мой первый пост и получить тем самым ответ на свой вопрос

    The opinion expressed by me is not an official position of Microsoft

    13 марта 2017 г. 8:40
    Модератор
  • Я ответил уже osr_ по предложению оптимизации кода. Мы разговариваем, как слепой с глухим.

    При выполнении задачи диспетчер показывает загрузку одного ядра примерно на 100%, остальные приблизительно на 50% (т.е. для core i5 это 4 ядра, для core i7 это 8. понимаю, что i7 это не физические 8 ядер).

    Показателем для меня, повторюсь, является счетчик выполнения операций самого excel и время выполнения задачи целиком. В том то и дело, что время выполнения задачи целиком практически не отличается. Счетчик выполненных итераций идет "нога в ногу" на 2х компьютерах.

    13 марта 2017 г. 8:59
  • По поводу производительности EXCEL есть статья:

    https://msdn.microsoft.com/ru-ru/library/office/ff700515(v=office.14).aspx

    Процессор работает с памятью и дисковой системой, естественно, более быстрая память и дисковая подсистема может влиять на производительность. Процессоры оба четырёхядерные, разницы почти не будет, влияние может оказывать частота процессора и скорость чтения-записи ОЗУ и CCD небольших блоков данных.

    13 марта 2017 г. 9:15
  • Я ответил уже osr_ по предложению оптимизации кода. Мы разговариваем, как слепой с глухим.

    При выполнении задачи диспетчер показывает загрузку одного ядра примерно на 100%, остальные приблизительно на 50% (т.е. для core i5 это 4 ядра, для core i7 это 8. понимаю, что i7 это не физические 8 ядер).

    Показателем для меня, повторюсь, является счетчик выполнения операций самого excel и время выполнения задачи целиком. В том то и дело, что время выполнения задачи целиком практически не отличается. Счетчик выполненных итераций идет "нога в ногу" на 2х компьютерах.

    Коли что я не osr_, вы в этот раз осилили половину моего ответа (он написан сразу под вашим вопросом)

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

    У системы есть различные системы мониторинга своего состояния, task manager - один из них, но он не единственный и в нем не одна закладка

    Если вы видите что вы упираетесь в одно ядро - а все остальные используются на половину - Вам нужно ОДНО производительно ядро, если вы поставите проц с 20 ядрами вы все равно будете упираться в ОДНО ядро, а избежать этого можно оптимизацией кода, про которую вы и так все знаете и про которую Вам не нужно говорить (если что я и не говорю). Проц это только один из компонентов в которых Вы открыв одну из оснасток нашли bottleneck, но он может быть не единственным, для этого нужно открыть другие оснастки и посмотреть. Я сидя по другую сторону от Вашего монитора не могу догадаться про особенность Вашего солюшена, и Ваши оснастки я тоже не могу посмотреть.


    The opinion expressed by me is not an official position of Microsoft

    13 марта 2017 г. 9:17
    Модератор
  • Спасибо. Дельная ссылка. Я понимаю, что excel не сильно продвинутая программа. Критично, скорее всего, процессор (частота и ядерность - поскольку вычисления все же идут на нескольких ядрах, в настройках это указывается), память оперативная (частота, тайминги, вероятно тип памяти), при малом количестве ОП или специфических операциях видимо и винчестер. Тактовая частота у моего i7 выше (хоть и не намного) чем у i5. Поколение процессора должно было сказаться и блоке предсказания переходов, кэше (в том числе и его размере) и скорости работы с ОП (поскольку контроллер более продвинутый). Память на машине помощней: DDR4 - частота 3ГГц, тайминги CL15, объем 16Гб, против у более слабой: DDR3 1600МГц, 8Гб. К диску во время выполнения практически нет обращения, скорее всего система только подчитывает по своим задачам.
    13 марта 2017 г. 9:33
  • Посмотрите PowerPivot - это расширение Excel предназначено для высокопроизводительной обработки больших объемов информации.

    Сазонов Илья

    https://isazonov.wordpress.com/

    13 марта 2017 г. 12:06
    Модератор
  • Да, спасибо. Смотрел уже статьи по этой надстройке.
    14 марта 2017 г. 5:35
  • https://msdn.microsoft.com/ru-ru/library/office/bb687899.aspx#sectionSection0
  • https://support.microsoft.com/ru-ru/help/2768648/display-issues-in-office-client-applications