Страницы: 1 2 След.
RSS
Какие комплектующие ПК влеяют на скорость обработки данных в Таблице
 
Добрый день!
Интересует, какие комплектующие ПК влеяют на скорость обработки данных в Таблице?
Нужны только достоверные данные, т.к. нужно докупить (заменить) в компьютере именно то, что 100% повлияет на скорость обработки данных.

Суть проблемы - есть екселевский файл весом 60-70мб (в зависимости от заполненных данных). В нём находиться огромнейшее кол-во сложнейших вычислений.
Проблемы:
1) Загрузка и сохранение занимает около 1.5 минут!
2) Каждое действие, будь то просто написание текста или внесение/изменение любых данных, приводит к 100% загрузке процессора (т.е. перед тем как отобразить написанные/изменённые данные происходит обработка "процессоры (%)" (около 5-7 секунд).

Я пришёл к выводу, что скорее всего у меня проблемы с производительностью ПК.
Что посоветуете?

Моё железо сейчас:
Процессор Pentium 2 ядра
Память 8Gb DDR3
HDD 5400rpm
int.VGA

P.s. файл трогать нельзя! Он полностью рабочий (в нём никаких условных форматирований - только формулы) - нужно изменить только скорость обработки данных.
Изменено: DivineSoul - 12.05.2016 12:26:52
 
А при чем тут Excel?
 
DivineSoul, поможет только отключение автоматического пересчета формул. В остальном надо менять подход к тому, для чего используется данный файл.
 
Я не верю, что производительность железа никак не влияет на скорость работы программы...
Неужели если поставить к примеру 4х ядерный Core i5/i7 процессор, и 16Гб ОЗУ, это никак не повлияет на скорость обработки данных...!?
Ведь не зря для работы с обычной программой 1C ставят сервер на Xeon процессоре (-рах). Ведь программа завязана на постоянной обработке и сопоставлении данных.

Я почитал описание программы Excel на офф сайте, и поразился тому, какой объём данных она может обрабатывать (моя таблица и на 2% не соответствует тому, что заявлено в мануале производительности программы), а по факту тормозит так, как будто забита формулами до предельных возможностей программы).
 
Поясню подробнее - мой файлик является своеобразным аналогом 1С-ки - т.е. при помощи формул воссоздан почти весь функционал программы 1С для конкретных задач. Вопрос стоит только в том, как ускорить обработку вводимых данных, чтобы не ждать по 5-7 секунд после каждого введённого значения!?
 
Есть понятие производительность ПК, а есть производительность самих исполняемых приложений.
Если взять обычный 32-битный эксель - он не будет использовать эти 16ГБ оперативки которые вы поставите.
Есть еще использвание графического ускорителя (видеокарта) - в экселе такой фишки еще нет (поправьте, если не прав - тут я сомневаюсь) - да и будет ли - непонятно.

Есть еще последовательность вычислений - ПК будет обрабатывать данные в файле ровно так как Вы напишите формулы.
Еще производительность зависит от того куда обращается Excel при обработке данных. Если это какой-то файл в сети - скорость будет зависить так же от скорости сетевого соединения и "трафика" создаваемого в этой сети. Также эксель может отправлять запросы во внешние БД - тогда производительность будет зависить от "сети" а также производительности сервера той БД к которому обращается excel (и то какие расурсы выделены для этой БД на этом сервере).

Если в файле эксель много формул написанных "с запасом" (когда обращение идет не на выделенные диапазоны с данными - а на диапазон столбцов/строк).
К тому же если формулы работающие с массивами (Агрегат), а также формулы массивов - тогда эксель будет работать медленно.

Вообще для комфортной работы эксель достаточно вот такой конфигурации:
1. Intel Pentium на базе чипа Core I5 (или аналогичной производительности Athlon)
2. Оперативная память 3-4 ГБ
3. Монитор на 21-22 дюйма
4. Скорость сети 100МБ

Еще следует помнить что эксель не должен использоваться как База Данных для каких-то серьезных проектов.
В общем, без Вашего "медленного" файла и Ваших "ожиданий" от работы Excel тяжело что то говорить.

Простые способы ускорить работу эксель:
1. Отключить автоматический пересчет формул
2. Отключить "лишние" проверки в фоновом режиме ("красные", "зеленые" треугольники в углах ячеек)
3. Перенести данные из сетевых папок - локально (если проблема в сети) или же вообще организовать работу в одной книге в разных листах.
4. Убрать "промежуточные" вычисления. Т.е. если если какие-то доп строки/столбцы используются для получения каких-то значений для дальнейшего пересчета - изменить основную вычисляемую формулу таким образом чтобы не использовать доп строки/столбцы (Мега-формулы)
5. Убрать "лишнее" условное форматирование.

В общем это из того что пришло в голову.
Никто не знает столько - сколько не знаю я
 
Цитата
fakenomore17 написал:
Т.е. если если какие-то доп строки/столбцы используются для получения каких-то значений для дальнейшего пересчета - изменить основную вычисляемую формулу таким образом чтобы не использовать доп строки/столбцы (Мега-формулы)
Странно. Я все жизнь считал , что десяток простых и быстрых формул будут работать быстрее, чем одна МЕГАформула. Неужели я ошибался?
Вполне такой нормальный кинжальчик. Процентов на 100
 
китин, получается, да.

несмогу подобрать исключения - но возможно они есть, но в общем суть вот в чем:
мегаформула считается один раз, промежуточные формулы пусть каждая, в отдельности, и легче - но считается отдельно.
соответсвенно считается большее количество раз.
Процессору посчитать сложную мегаформулу не намного сложнее чем простую.

условно говоря так:
простая формула считается 75 нсек (промежуточных формул 2)
мегаформула счиатеся 145 нсек
каждая ячейка считается отдельно - соотвественно 75+75 = 150 а это больше чем 145.

п.с.: зависимость, конечно, не линейная - но она присутствует.
Изменено: fakenomore17 - 14.05.2016 23:17:19
Никто не знает столько - сколько не знаю я
 
Цитата
fakenomore17 написал: получается, да.
пойду застрелюсь  :cry:
а надо попробовать. сегодня некогда.может в выходные. как раз новую табличку пытаюсь сделать.
Изменено: китин - 13.05.2016 11:53:31
Вполне такой нормальный кинжальчик. Процентов на 100
 
Цитата
китин написал: пойду застрелюсь  
не спешите стреляться, вопрос по поводу скорости неоднозначен ТЫЦ
 
На СУБД переходите. Или хотя-бы на макросы.
Меня всегда это радовало
Цитата
DivineSoul написал: файл трогать нельзя! Он полностью рабочий
:). Особенно с восклицательным знаком. Открытие/закрытие по 1,5 мин и каждая операция по 5 сек для меня далеко не "рабочий" файл
Какой, кстати, его объем?
70 Мб !  8-0
Изменено: Sanja - 12.05.2016 14:56:16
Согласие есть продукт при полном непротивлении сторон
 
Ivan.kh,спасибо!!!! поживем еще
абсолютно согласен с авторами (ссылка выше в посте Ivan.kh) я тут пару месяцев назад наваял формулу так символов в 300-350 где то за полчаса. Вчера два часа пытался переделать ее под новые реалии.плюнул написал новую.Теперь думаю что будет если босс снова решит условия поменять  8-0
Изменено: китин - 12.05.2016 15:03:35
Вполне такой нормальный кинжальчик. Процентов на 100
 
Цитата
китин написал:
Я все жизнь считал , что десяток простых и быстрых формул будут работать быстрее, чем одна МЕГАформула.
Я тоже так считаю. Не вижу случая, когда мега-формула будет работать быстрее нескольких простых формул. Особенно это заметно, если в МЕГА-формуле используются массивы и таких формул много. Или в мега-формуле несколько раз пересчитывается один и тот же фрагмент.

По ускорению - если есть возможность по объёму данных - используйте 2003 офис; затем - 2010. 2013 и 2016 заметно медленнее 2010. Во всяком случае на слабом железе.
Видео-карта на скорость влияет, особенно в последних версиях (2013; 2016)
Память; ну, только если объем данных большой, если много формул массива и сами массивы в формулах большие.
Процессор конечно.
Материнка (чипсет) тоже.
Попутный софт (что еще кроме офиса установлено и запущенно).
 
Цитата
Михаил С. написал:
По ускорению - если есть возможность по объёму данных - используйте 2003 офис; затем - 2010. 2013 и 2016 заметно медленнее 2010. Во всяком случае на слабом железе.
...
Память; ну, только если объем данных большой, если много формул массива и сами массивы в формулах большие.
Процессор конечно.
- для ускорения пересчета - ++
- для ускорения открытия - можно перенести файл на RAM-диск
Неизлечимых болезней нет, есть неизлечимые люди.
 
В экселе на быстродействие влияет тупо частота процессора. Так как он грузит только одно ядро процессора.

ЗЫ А памяти у ТС и так уже много.
Изменено: ArtHome - 13.05.2016 11:54:31
 
Основной прирост скорости дает замена процессора на более быстрый и многоядерный (для пересчета формул в Excel 2007 и выше)
Замена памяти и диска не сильно приведет к изменению производительности.

Лучше всего заменить формулы на разовые расчеты макросом, SQL запросы либо на сводные таблицы.

Например у Вас в файле огромное количество ВПР, которые постоянно пересчитываются.
Если в постоянном пересчете нет необходимости то их нужно один раз использовать, а затем менять на значения.
 
Цитата
fakenomore17 написал:
Еще следует помнить что эксель не должен использоваться как База Данных для каких-то серьезных проектов.
по-моему у ТС как раз этот случай, исходя из:
Цитата
DivineSoul написал:
Поясню подробнее - мой файлик является своеобразным аналогом 1С-ки - т.е. при помощи формул воссоздан почти весь функционал программы 1С для конкретных задач
Изменено: Бахтиёр - 12.05.2016 19:06:04
 
Цитата
ArtHome написал:
В экселе на быстродействие влияет тупо частота процессора. Так как он грузит только одно ядро процессора.
?
 
Цитата
MCH написал: Замена памяти ... не сильно приведет к изменению производительности.
для случаев, указанных в  #13, наверно, всё-таки будут улучшения... мне кажется... по крайней мере, в своё время, чтобы взглянуть на AutoCad (много оперативки заполняет) - мне пришлось увеличивать её, и это помогло... имхо (случаи из #13 тоже, видимо, много озу могут занять)
Изменено: JeyCi - 12.05.2016 19:54:50
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
не хватило сил прочесть все посты
1.70 мегобайт это слишком много
оптимизируйте файл.
-очень часто вижу у людей файлы не оправдано тяжелые пример: человек мне скидывает файл весом 3-4 мб, я с ним колдую и получаю файл с тем же функционалом но весом 100-200 кб
2. железо на мой взгляд вполне нормальное, хотя на некоторых виражах нужна видюха, но я думаю вы с такими виражами не работаете
-в случае макросов отключают скринапдейт
3. оптимизируйте формулы
-очень часто , даже специ пишут формулы, а после того как файл разрастается то формулы вешают машину, для этого нужно оптимизировать формулы под объемы и нагрузки на проц (функционал тот же, а производительность в многократно отличается)
4. если макросы, то оптимизировать макросы под уменьшение нагрузки

суть: изучайте направление Как оптимизировать формулы/макросы для ускорение их работы

а то что вы ферари себе купите, она всеравно не поедет быстрей жигулей по грунтовой дороге и прицепленным белазом
у меня простая версия Экселя, в ней нет кнопки "Прочитать мысли и сгенерировать файл пример"
 
Бахтиёр, это для успокоения пользователей. Видимо в определённых ситуациях даёт прирост производительности, когда есть несвязанные блоки вычислений. Но в узких местах может быть только один процесс.

Пример - выполняем бесконечный цикл
Код
Option Explicit

Sub Кнопка1_Щелчок()
While True
Wend
End Sub

При этом видим, что у четырёхядерного процессора загрузка всего 25%. Операционная система бросает эксель с одного ядра на другое, но общая загрузка процессора - 25%, увы.
 
Цитата
Фродо написал: не хватило сил прочесть все посты
Как в анекдоте - чукча не читатель, чукча писатель, однако! :)
 
Доброе времени суток
Цитата
Это для успокоения пользователей
ArtHome, как бы Бахтиёр показывал настройку числа используемых процессоров в рамках темы. Excel использует многопоточные вычисления для расчётов формул. VBA же как был однопоточным, так и остался. Так что ваше замечание, в рамках темы не совсем корректно.
 
Цитата
Андрей VG написал:
Excel использует многопоточные вычисления для расчётов формул. VBA же как был однопоточным, так и остался. Так что ваше замечание, в рамках темы не совсем корректно.
Два разных несвязанных документа - без проблем, будут исполнятся в разных потоках. Но речь идёт у ТС про один проект, в котором изменение одной ячейки приводит к перерасчётам продолжительностью в несколько секунд.

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

Потоки ещё могут использоваться при построении деревьев вычислений. Но для случая ТС уже вся эта работа выполнена, проект в активном актуальном состоянии. И после внесения изменений пользователем тупо начинается пересчёт всей цепочки. Возможно у ТС всё усугубляется неверной работой макросов - например запрещать и разрешать события надо всего один раз, избегая вложенностей.

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

Более того, программируя на более других языках многопоточные приложения под Windows, я понимаю, почему это происходит именно так - трудно начать расчёт в параллельном потоке с середины вычислений не имея результата предыдущей части. Можно только что-то оптимизировать и подготовиться, но эта оптимизация выполняется в самом начале, и на десятый раз уже давно всё выоптимизировано...)
 
Excel отключает многопоточные вычисления, если в формулах используются такие функции:
ДВССЫЛ;
ЯЧЕЙКА c параметрами "формат2" или "адрес";
ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ, БДСУММ, БДПРОИЗВЕД и прочие функции баз данных, ссылающиеся на сводные таблицы;
КУБЗНАЧЕНИЕ и прочие фукции работы с кубами;
АДРЕС с параметром имени листа;
ГИПЕРССЫЛКА;
ТИП.ОШИБКИ;
любые функции XLM в именах

Для больших книг с множеством формул бывает полезно нажать Alt-F11, затем CTRL-G, ввести ActiveWorkbook.ForceFullCalculation=True и нажать Enter.
Данное действие для активной книги достаточно выполнить один раз,
После этого в книге не используются старые деревья зависимостей формул, которые со временем могут стать громоздкими и занимать больше памяти и времени пересчета. При загрузке такой книги дерево зависимостей создается каждый раз заново.
 
Владимир, если я правильно Вас понял, стоит ли на большие книги с множеством формул:
Повесить на Private Sub Workbook_Open():
Код
ActiveWorkbook.ForceFullCalculation=True
?

Или же нужно выполнить это действие для книги один раз и забыть об этом?
Изменено: Бахтиёр - 13.05.2016 07:27:56
 
Цитата
Бахтиёр написал: Повесить на Private Sub Workbook_Open():
Да, но уточню, что данный метод дает эффект если на листе используется множество многоуровневых ссылок: ячейка ссылается на другую, та на третью. и так много раз.  Для таких формул для каждого листа Excel создает своё дерево зависимостей. При изменении значения ячейки она сначала помечается как Dirty - отметка о необходимости пересчета зависимостей формул от этой ячейки. Затем для каждой такой помеченной ячейки сверху-вниз и слева-направо сканируются остальные ячейки, которые ссылаются на неё и найденные зависимые ячеки тоже помечаются как Dirty. Чем больше уровней вложения зависимостей, тем дольше такой процесс длится. После этого запускается пересчет формул всех найденных таким образом ячеек. А ForceFullCalculation=True исключает процесс сканирования и просто запускается процесс пересчета всех формул листа, что может быть быстрее (зависит от глубины зависимостей формул) .
Но в зависимости от формул, данный метод может и замедлить общее время пересчета. ForceFullCalculation действует до тех пор, пока книга открыта в данной сессии excel и не запоминается в книге при последующих открытиях.

Замедление пересчета может быть связано и с тем, что книга редактировалась в другой версии Excel или с другим количеством ядер процессора.
Тогда может помочь еще и такой метод оптимизации
Код
Sub Auto_Open()
  ' Сравнить версии пересчета, при различии - перестроить зависимости и пересчитать все формулы оптимально для данной версии Excel и данного компьютера (кол-во ядер)  
  If Application.CalculationVersion <> ThisWorkbook.CalculationVersion Then
    Application.CalculateFullRebuild
  End If
End Sub
Изменено: ZVI - 13.05.2016 08:25:20
 
ForceFullCalculation=True  имеет смысл пробоватьа в тех случаях, когда книга открывается долго или когда редактирование/удаление ячеек производится медленно.
Нужно еще учитывать то, что  ForceFullCalculation действует на уровне приложения Excel, а не конкретной книги - пересчитываются все открытые книги
 
Владимир, спасибо большое за подробный (как всегда) ответ.
Буду пробовать.

Цитата
ZVI написал:
...уточню, что данный метод дает эффект если на листе используется множество многоуровневых ссылок: ячейка ссылается на другую, та на третью. и так много раз...
...ForceFullCalculation=True имеет смысл пробоватьа в тех случаях, когда книга открывается долго или когда редактирование/удаление ячеек производится медленно...
Как раз часто сталкиваюсь с такими случаями
 
Цитата
ZVI написал: Тогда может помочь еще и такой метод оптимизации
честно говоря, только что применила (на всякий случай на открытие) 2 раза проверила - с последующим открытием с этими строками и без - и как-то ~ на 20сек. увеличилось время открытия (но уже, как вернуть, не знаю)  :(
(вернуть не удалось, поэтому вернулась к резервной копии файла, благо сохранила её заранее)
P.S. хотя как-то даже на 20кб уменьшился файл (после код из #27)
Цитата
ZVI написал: ... книга редактировалась в другой версии Excel
(-случай примерно такой - переустанавливала windows и xl - немного др версии с xl2010 на xl2010sp1)
Изменено: JeyCi - 13.05.2016 18:01:55
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Страницы: 1 2 След.
Читают тему
Наверх